diff --git a/executable_semantics/interpreter/type_checker.cpp b/executable_semantics/interpreter/type_checker.cpp index b90e9c4f029c..d8903b1f7386 100644 --- a/executable_semantics/interpreter/type_checker.cpp +++ b/executable_semantics/interpreter/type_checker.cpp @@ -50,27 +50,22 @@ static void ExpectPointerType(SourceLocation loc, const std::string& context, } } -static SourceLocation ReifyFakeSourceLoc() { - return SourceLocation("", 0); -} - // Reify type to type expression. static auto ReifyType(Ptr t, SourceLocation loc) -> Ptr { switch (t->Tag()) { case Value::Kind::IntType: - return global_arena->New(ReifyFakeSourceLoc()); + return global_arena->New(loc); case Value::Kind::BoolType: - return global_arena->New(ReifyFakeSourceLoc()); + return global_arena->New(loc); case Value::Kind::TypeType: - return global_arena->New(ReifyFakeSourceLoc()); + return global_arena->New(loc); case Value::Kind::ContinuationType: - return global_arena->New(ReifyFakeSourceLoc()); + return global_arena->New(loc); case Value::Kind::FunctionType: { const auto& fn_type = cast(*t); return global_arena->New( - ReifyFakeSourceLoc(), ReifyType(fn_type.Param(), loc), - ReifyType(fn_type.Ret(), loc), + loc, ReifyType(fn_type.Param(), loc), ReifyType(fn_type.Ret(), loc), /*is_omitted_return_type=*/false); } case Value::Kind::TupleValue: { @@ -79,24 +74,24 @@ static auto ReifyType(Ptr t, SourceLocation loc) args.push_back( FieldInitializer(field.name, ReifyType(field.value, loc))); } - return global_arena->New(ReifyFakeSourceLoc(), args); + return global_arena->New(loc, args); } case Value::Kind::ClassType: return global_arena->New( - ReifyFakeSourceLoc(), cast(*t).Name()); + loc, cast(*t).Name()); case Value::Kind::ChoiceType: return global_arena->New( - ReifyFakeSourceLoc(), cast(*t).Name()); + loc, cast(*t).Name()); case Value::Kind::PointerType: return global_arena->New( - ReifyFakeSourceLoc(), Operator::Ptr, + loc, Operator::Ptr, std::vector>( {ReifyType(cast(*t).Type(), loc)})); case Value::Kind::VariableType: return global_arena->New( - ReifyFakeSourceLoc(), cast(*t).Name()); + loc, cast(*t).Name()); case Value::Kind::StringType: - return global_arena->New(ReifyFakeSourceLoc()); + return global_arena->New(loc); case Value::Kind::AlternativeConstructorValue: case Value::Kind::AlternativeValue: case Value::Kind::AutoType: