diff --git a/toolchain/check/cpp/import.cpp b/toolchain/check/cpp/import.cpp index c9340d6ff404..12189c74b3c8 100644 --- a/toolchain/check/cpp/import.cpp +++ b/toolchain/check/cpp/import.cpp @@ -2264,6 +2264,10 @@ static auto MapConstant(Context& context, SemIR::LocId loc_id, MakeStringLiteral(context, Parse::StringLiteralId::None, string_id); context.imports().push_back(inst_id); return inst_id; + } else if (isa(expr)) { + auto type_id = MapNullptrType(context, loc_id).type_id; + return GetOrAddInst(context, SemIR::LocId::None, + {.type_id = type_id}); } SemIR::TypeId type_id = MapType(context, loc_id, expr->getType()).type_id; diff --git a/toolchain/check/cpp/macros.cpp b/toolchain/check/cpp/macros.cpp index 9b8cbea67670..9684f4c7a9e0 100644 --- a/toolchain/check/cpp/macros.cpp +++ b/toolchain/check/cpp/macros.cpp @@ -62,7 +62,8 @@ auto TryEvaluateMacroToConstant(Context& context, SemIR::LocId loc_id, } if (isa(result_expr) || - isa(result_expr)) { + isa(result_expr) || + isa(result_expr)) { return result_expr; } diff --git a/toolchain/check/testdata/interop/cpp/macros.carbon b/toolchain/check/testdata/interop/cpp/macros.carbon index eeaa6ab2fc4b..141331152f3d 100644 --- a/toolchain/check/testdata/interop/cpp/macros.carbon +++ b/toolchain/check/testdata/interop/cpp/macros.carbon @@ -2,7 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/primitives.carbon +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -595,6 +595,20 @@ fn F() { Cpp.M_TRUE = false; } +// --- nullptr.carbon + +library "[[@TEST_NAME]]"; + +import Cpp inline ''' + #define MyNullPtr nullptr + void foo(int arr[2]); +'''; + +fn F() { + Cpp.foo(Cpp.MyNullPtr); +} + + // --- lambda.carbon library "[[@TEST_NAME]]";