mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-27 07:10:09 +01:00
Replace int lines with file-associated SourceLocations (#779)
Most interesting changes should be ast/source_location.h and syntax/parse_and_lex_context.h
This commit is contained in:
@@ -55,7 +55,7 @@ void Pattern::Print(llvm::raw_ostream& out) const {
|
||||
}
|
||||
|
||||
TuplePattern::TuplePattern(const Expression* tuple_literal)
|
||||
: Pattern(Kind::TuplePattern, tuple_literal->LineNumber()) {
|
||||
: Pattern(Kind::TuplePattern, tuple_literal->SourceLoc()) {
|
||||
const auto& tuple = cast<TupleLiteral>(*tuple_literal);
|
||||
for (const FieldInitializer& init : tuple.Fields()) {
|
||||
fields.push_back(Field(
|
||||
@@ -63,30 +63,30 @@ TuplePattern::TuplePattern(const Expression* tuple_literal)
|
||||
}
|
||||
}
|
||||
|
||||
auto PatternFromParenContents(int line_num,
|
||||
auto PatternFromParenContents(SourceLocation loc,
|
||||
const ParenContents<Pattern>& paren_contents)
|
||||
-> const Pattern* {
|
||||
std::optional<const Pattern*> single_term = paren_contents.SingleTerm();
|
||||
if (single_term.has_value()) {
|
||||
return *single_term;
|
||||
} else {
|
||||
return TuplePatternFromParenContents(line_num, paren_contents);
|
||||
return TuplePatternFromParenContents(loc, paren_contents);
|
||||
}
|
||||
}
|
||||
|
||||
auto TuplePatternFromParenContents(int line_num,
|
||||
auto TuplePatternFromParenContents(SourceLocation loc,
|
||||
const ParenContents<Pattern>& paren_contents)
|
||||
-> const TuplePattern* {
|
||||
return global_arena->RawNew<TuplePattern>(
|
||||
line_num, paren_contents.TupleElements<TuplePattern::Field>(line_num));
|
||||
loc, paren_contents.TupleElements<TuplePattern::Field>(loc));
|
||||
}
|
||||
|
||||
AlternativePattern::AlternativePattern(int line_num,
|
||||
AlternativePattern::AlternativePattern(SourceLocation loc,
|
||||
const Expression* alternative,
|
||||
const TuplePattern* arguments)
|
||||
: Pattern(Kind::AlternativePattern, line_num), arguments(arguments) {
|
||||
: Pattern(Kind::AlternativePattern, loc), arguments(arguments) {
|
||||
if (alternative->Tag() != Expression::Kind::FieldAccessExpression) {
|
||||
FATAL_PROGRAM_ERROR(alternative->LineNumber())
|
||||
FATAL_PROGRAM_ERROR(alternative->SourceLoc())
|
||||
<< "Alternative pattern must have the form of a field access.";
|
||||
}
|
||||
const auto& field_access = cast<FieldAccessExpression>(*alternative);
|
||||
|
||||
Reference in New Issue
Block a user