Skip to content

Commit a5eb0b5

Browse files
johnniwinthercommit-bot@chromium.org
authored and
commit-bot@chromium.org
committed
[cfe] Handle callable extension getters
Closes #40596 Closes #40713 Closes #39889 Change-Id: I183560b912e2f6f2c02d51278c0d28c8a6d67f99 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139203 Reviewed-by: Jens Johansen <jensj@google.com> Commit-Queue: Johnni Winther <johnniwinther@google.com>
1 parent 6c6144b commit a5eb0b5

File tree

44 files changed

+623
-255
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+623
-255
lines changed

pkg/front_end/lib/src/fasta/kernel/body_builder.dart

+13-10
Original file line numberDiff line numberDiff line change
@@ -641,8 +641,9 @@ class BodyBuilder extends ScopeListener<JumpTarget>
641641
(expression is! ReadOnlyAccessGenerator ||
642642
expression is TypeUseGenerator ||
643643
expression is ParenthesizedExpressionGenerator)) {
644-
push(wrapInProblem(
645-
toValue(expression), fasta.messageExpressionNotMetadata, noLength));
644+
Expression value = toValue(expression);
645+
push(wrapInProblem(value, fasta.messageExpressionNotMetadata,
646+
value.fileOffset, noLength));
646647
} else {
647648
push(toValue(expression));
648649
}
@@ -860,8 +861,8 @@ class BodyBuilder extends ScopeListener<JumpTarget>
860861
} else {
861862
Expression value = toValue(node);
862863
if (!forest.isThrow(node)) {
863-
value =
864-
wrapInProblem(value, fasta.messageExpectedAnInitializer, noLength);
864+
value = wrapInProblem(value, fasta.messageExpectedAnInitializer,
865+
value.fileOffset, noLength);
865866
}
866867
initializers = <Initializer>[
867868
buildInvalidInitializer(node, token.charOffset)
@@ -3679,8 +3680,9 @@ class BodyBuilder extends ScopeListener<JumpTarget>
36793680
push(generator.buildPrefixIncrement(incrementOperator(token),
36803681
offset: token.charOffset));
36813682
} else {
3683+
Expression value = toValue(generator);
36823684
push(wrapInProblem(
3683-
toValue(generator), fasta.messageNotAnLvalue, noLength));
3685+
value, fasta.messageNotAnLvalue, value.fileOffset, noLength));
36843686
}
36853687
}
36863688

@@ -3692,8 +3694,9 @@ class BodyBuilder extends ScopeListener<JumpTarget>
36923694
push(new DelayedPostfixIncrement(
36933695
this, token, generator, incrementOperator(token)));
36943696
} else {
3697+
Expression value = toValue(generator);
36953698
push(wrapInProblem(
3696-
toValue(generator), fasta.messageNotAnLvalue, noLength));
3699+
value, fasta.messageNotAnLvalue, value.fileOffset, noLength));
36973700
}
36983701
}
36993702

@@ -5465,16 +5468,16 @@ class BodyBuilder extends ScopeListener<JumpTarget>
54655468
}
54665469

54675470
@override
5468-
Expression wrapInProblem(Expression expression, Message message, int length,
5471+
Expression wrapInProblem(
5472+
Expression expression, Message message, int fileOffset, int length,
54695473
{List<LocatedMessage> context}) {
5470-
int charOffset = expression.fileOffset;
54715474
Severity severity = message.code.severity;
54725475
if (severity == Severity.error) {
54735476
return wrapInLocatedProblem(
5474-
expression, message.withLocation(uri, charOffset, length),
5477+
expression, message.withLocation(uri, fileOffset, length),
54755478
context: context);
54765479
} else {
5477-
addProblem(message, charOffset, length, context: context);
5480+
addProblem(message, fileOffset, length, context: context);
54785481
return expression;
54795482
}
54805483
}

pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart

+10-2
Original file line numberDiff line numberDiff line change
@@ -741,8 +741,8 @@ class InferenceVisitor
741741
inferrer.library.addProblem(messageDefaultListConstructorWarning,
742742
node.fileOffset, noLength, inferrer.helper.uri);
743743
} else {
744-
resultNode = inferrer.helper.wrapInProblem(
745-
node, messageDefaultListConstructorError, noLength);
744+
resultNode = inferrer.helper.wrapInProblem(node,
745+
messageDefaultListConstructorError, node.fileOffset, noLength);
746746
}
747747
}
748748
}
@@ -2362,6 +2362,7 @@ class InferenceVisitor
23622362
invocationResult.expression..fileOffset = node.fileOffset,
23632363
templateNullableExpressionCallError.withArguments(
23642364
receiverType, inferrer.isNonNullableByDefault),
2365+
node.fileOffset,
23652366
noLength));
23662367
}
23672368
}
@@ -3605,6 +3606,7 @@ class InferenceVisitor
36053606
binaryName.name,
36063607
leftType,
36073608
inferrer.isNonNullableByDefault),
3609+
binary.fileOffset,
36083610
binaryName.name.length));
36093611
}
36103612
}
@@ -3696,6 +3698,7 @@ class InferenceVisitor
36963698
unaryName.name,
36973699
expressionType,
36983700
inferrer.isNonNullableByDefault),
3701+
unary.fileOffset,
36993702
unaryName == unaryMinusName ? 1 : unaryName.name.length));
37003703
}
37013704
}
@@ -3777,6 +3780,7 @@ class InferenceVisitor
37773780
indexGetName.name,
37783781
receiverType,
37793782
inferrer.isNonNullableByDefault),
3783+
read.fileOffset,
37803784
noLength));
37813785
}
37823786
}
@@ -3835,6 +3839,7 @@ class InferenceVisitor
38353839
write,
38363840
templateNullableOperatorCallError.withArguments(indexSetName.name,
38373841
receiverType, inferrer.isNonNullableByDefault),
3842+
write.fileOffset,
38383843
noLength);
38393844
}
38403845
}
@@ -3964,6 +3969,7 @@ class InferenceVisitor
39643969
propertyName.name,
39653970
receiverType,
39663971
inferrer.isNonNullableByDefault),
3972+
read.fileOffset,
39673973
propertyName.name.length));
39683974
}
39693975
}
@@ -4045,6 +4051,7 @@ class InferenceVisitor
40454051
propertyName.name,
40464052
receiverType,
40474053
inferrer.isNonNullableByDefault),
4054+
write.fileOffset,
40484055
propertyName.name.length);
40494056
}
40504057
}
@@ -5553,6 +5560,7 @@ class InferenceVisitor
55535560
node,
55545561
templateNonNullableNotAssignedError
55555562
.withArguments(node.variable.name),
5563+
node.fileOffset,
55565564
node.variable.name.length));
55575565
}
55585566
}

pkg/front_end/lib/src/fasta/type_inference/inference_helper.dart

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ abstract class InferenceHelper {
2626
void addProblem(Message message, int charOffset, int length,
2727
{List<LocatedMessage> context, bool wasHandled});
2828

29-
Expression wrapInProblem(Expression expression, Message message, int length,
29+
Expression wrapInProblem(
30+
Expression expression, Message message, int fileOffset, int length,
3031
{List<LocatedMessage> context});
3132

3233
String constructorNameForDiagnostics(String name,

0 commit comments

Comments
 (0)