Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit e1fe4d4

Browse files
peter-ahe-googlecommit-bot@chromium.org
authored andcommitted
Remove type inferrer from generators
The type inferrer is no longer used (and wasn't necessary to begin with, it should have been exposed via the helper object instead). Also some other tweaks that should help me avoid merge conflicts. Change-Id: I1f2aade93f9c836cc02dac6c002f48156caf2c76 Reviewed-on: https://dart-review.googlesource.com/74063 Reviewed-by: Jens Johansen <jensj@google.com> Commit-Queue: Peter von der Ahé <ahe@google.com>
1 parent c42bde5 commit e1fe4d4

File tree

7 files changed

+43
-76
lines changed

7 files changed

+43
-76
lines changed

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2285,8 +2285,7 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
22852285
}
22862286
}
22872287
if (name is Generator) {
2288-
push(name.buildTypeWithBuiltArguments(arguments,
2289-
typeInferrer: _typeInferrer));
2288+
push(name.buildTypeWithBuiltArguments(arguments));
22902289
} else if (name is TypeBuilder) {
22912290
push(name.build(library));
22922291
} else {
@@ -2898,7 +2897,7 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
28982897
LocatedMessage argMessage = checkArgumentsForFunction(
28992898
target.function, arguments, charOffset, typeParameters);
29002899
if (argMessage != null) {
2901-
var error = throwNoSuchMethodError(
2900+
Expression error = throwNoSuchMethodError(
29022901
forest.literalNull(null)..fileOffset = charOffset,
29032902
target.name.name,
29042903
arguments,
@@ -3598,13 +3597,12 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
35983597
@override
35993598
void endRethrowStatement(Token rethrowToken, Token endToken) {
36003599
debugEvent("RethrowStatement");
3601-
var error = inCatchBlock
3600+
push(new ExpressionStatementJudgment(new RethrowJudgment(inCatchBlock
36023601
? null
36033602
: buildProblem(fasta.messageRethrowNotCatch,
36043603
offsetForToken(rethrowToken), lengthForToken(rethrowToken))
3605-
.desugared;
3606-
push(new ExpressionStatementJudgment(
3607-
new RethrowJudgment(error)..fileOffset = offsetForToken(rethrowToken)));
3604+
.desugared)
3605+
..fileOffset = offsetForToken(rethrowToken)));
36083606
}
36093607

36103608
@override

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

Lines changed: 21 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@ import '../parser.dart' show lengthForToken, lengthOfSpan, offsetForToken;
4545

4646
import '../problems.dart' show unhandled, unsupported;
4747

48-
import '../type_inference/type_inferrer.dart' show TypeInferrer;
49-
5048
import 'constness.dart' show Constness;
5149

5250
import 'expression_generator_helper.dart' show ExpressionGeneratorHelper;
@@ -82,12 +80,9 @@ import 'kernel_ast_api.dart'
8280
import 'kernel_builder.dart'
8381
show
8482
AccessErrorBuilder,
85-
BuiltinTypeBuilder,
8683
Declaration,
87-
FunctionTypeAliasBuilder,
8884
KernelClassBuilder,
89-
KernelFunctionTypeAliasBuilder,
90-
KernelTypeVariableBuilder;
85+
KernelFunctionTypeAliasBuilder;
9186

9287
import 'kernel_expression_generator.dart'
9388
show IncompleteSendGenerator, SendAccessGenerator;
@@ -220,7 +215,7 @@ abstract class Generator implements ExpressionGenerator {
220215
}
221216

222217
DartType buildTypeWithBuiltArguments(List<DartType> arguments,
223-
{bool nonInstanceAccessIsError: false, TypeInferrer typeInferrer}) {
218+
{bool nonInstanceAccessIsError: false}) {
224219
helper.addProblem(templateNotAType.withArguments(token.lexeme),
225220
offsetForToken(token), lengthForToken(token));
226221
return const InvalidType();
@@ -241,13 +236,14 @@ abstract class Generator implements ExpressionGenerator {
241236
assert(forest.argumentsTypeArguments(arguments).isEmpty);
242237
forest.argumentsSetTypeArguments(arguments, typeArguments);
243238
}
244-
var error = helper.throwNoSuchMethodError(
245-
forest.literalNull(token),
246-
name == "" ? plainNameForRead : "${plainNameForRead}.$name",
247-
arguments,
248-
nameToken.charOffset);
249-
250-
return new InvalidConstructorInvocationJudgment(error, null, arguments);
239+
return new InvalidConstructorInvocationJudgment(
240+
helper.throwNoSuchMethodError(
241+
forest.literalNull(token),
242+
name == "" ? plainNameForRead : "${plainNameForRead}.$name",
243+
arguments,
244+
nameToken.charOffset),
245+
null,
246+
arguments);
251247
}
252248

253249
bool get isThisPropertyAccess => false;
@@ -495,7 +491,7 @@ abstract class DeferredAccessGenerator implements Generator {
495491
@override
496492
buildPropertyAccess(
497493
IncompleteSendGenerator send, int operatorOffset, bool isNullAware) {
498-
var propertyAccess =
494+
Object propertyAccess =
499495
suffixGenerator.buildPropertyAccess(send, operatorOffset, isNullAware);
500496
if (propertyAccess is Generator) {
501497
return new DeferredAccessGenerator(
@@ -518,12 +514,11 @@ abstract class DeferredAccessGenerator implements Generator {
518514

519515
@override
520516
DartType buildTypeWithBuiltArguments(List<DartType> arguments,
521-
{bool nonInstanceAccessIsError: false, TypeInferrer typeInferrer}) {
517+
{bool nonInstanceAccessIsError: false}) {
522518
helper.addProblem(
523519
templateDeferredTypeAnnotation.withArguments(
524520
suffixGenerator.buildTypeWithBuiltArguments(arguments,
525-
nonInstanceAccessIsError: nonInstanceAccessIsError,
526-
typeInferrer: typeInferrer),
521+
nonInstanceAccessIsError: nonInstanceAccessIsError),
527522
prefixGenerator.plainNameForRead),
528523
offsetForToken(prefixGenerator.token),
529524
lengthOfSpan(prefixGenerator.token, token));
@@ -576,23 +571,9 @@ abstract class TypeUseGenerator implements Generator {
576571

577572
@override
578573
DartType buildTypeWithBuiltArguments(List<DartType> arguments,
579-
{bool nonInstanceAccessIsError: false, TypeInferrer typeInferrer}) {
580-
var declaration = this.declaration;
574+
{bool nonInstanceAccessIsError: false}) {
581575
if (arguments != null) {
582-
int expected = 0;
583-
if (declaration is KernelClassBuilder) {
584-
expected = declaration.target.typeParameters.length;
585-
} else if (declaration is FunctionTypeAliasBuilder) {
586-
expected = declaration.target.typeParameters.length;
587-
} else if (declaration is KernelTypeVariableBuilder) {
588-
// Type arguments on a type variable - error reported elsewhere.
589-
} else if (declaration is BuiltinTypeBuilder) {
590-
// Type arguments on a built-in type, for example, dynamic or void.
591-
expected = 0;
592-
} else {
593-
return unhandled("${declaration.runtimeType}",
594-
"TypeUseGenerator.buildType", offsetForToken(token), helper.uri);
595-
}
576+
int expected = declaration.typeVariablesCount;
596577
if (arguments.length != expected) {
597578
helper.warnTypeArgumentsMismatch(
598579
declaration.name, expected, offsetForToken(token));
@@ -1087,12 +1068,12 @@ abstract class PrefixUseGenerator implements Generator {
10871068
@override
10881069
/* Expression | Generator | Initializer */ doInvocation(
10891070
int offset, Arguments arguments) {
1090-
var error = helper.wrapInLocatedProblem(
1091-
helper.evaluateArgumentsBefore(arguments, forest.literalNull(token)),
1092-
messageCantUsePrefixAsExpression.withLocation(
1093-
helper.uri, offsetForToken(token), lengthForToken(token)));
10941071
return new StaticInvocationJudgment(null, forest.castArguments(arguments),
1095-
desugaredError: error)
1072+
desugaredError: helper.wrapInLocatedProblem(
1073+
helper.evaluateArgumentsBefore(
1074+
arguments, forest.literalNull(token)),
1075+
messageCantUsePrefixAsExpression.withLocation(
1076+
helper.uri, offsetForToken(token), lengthForToken(token))))
10961077
..fileOffset = offset;
10971078
}
10981079

@@ -1172,7 +1153,7 @@ abstract class UnexpectedQualifiedUseGenerator implements Generator {
11721153

11731154
@override
11741155
DartType buildTypeWithBuiltArguments(List<DartType> arguments,
1175-
{bool nonInstanceAccessIsError: false, TypeInferrer typeInferrer}) {
1156+
{bool nonInstanceAccessIsError: false}) {
11761157
Template<Message Function(String, String)> template = isUnresolved
11771158
? templateUnresolvedPrefixInTypeAnnotation
11781159
: templateNotAPrefixInTypeAnnotation;

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ abstract class KernelClassBuilder
301301
declaration.setRedirectingFactoryBody(
302302
targetBuilder.member, typeArguments);
303303
} else {
304-
var message = templateRedirectionTargetNotFound
304+
Message message = templateRedirectionTargetNotFound
305305
.withArguments(redirectionTarget.fullNameForErrors);
306306
if (declaration.isConst) {
307307
addProblem(message, declaration.charOffset, noLength);
@@ -794,7 +794,8 @@ abstract class KernelClassBuilder
794794
]);
795795
} else if (library.loader.target.backendTarget.strongMode &&
796796
declaredFunction?.typeParameters != null) {
797-
var substitutionMap = <TypeParameter, DartType>{};
797+
Map<TypeParameter, DartType> substitutionMap =
798+
<TypeParameter, DartType>{};
798799
for (int i = 0; i < declaredFunction.typeParameters.length; ++i) {
799800
substitutionMap[interfaceFunction.typeParameters[i]] =
800801
new TypeParameterType(declaredFunction.typeParameters[i]);
@@ -862,7 +863,9 @@ abstract class KernelClassBuilder
862863
// a type which is a subtype of the parameter it overrides.
863864
} else {
864865
// Report an error.
865-
var declaredMemberName = '$name::${declaredMember.name.name}';
866+
// TODO(ahe): The double-colon notation shouldn't be used in error
867+
// messages.
868+
String declaredMemberName = '$name::${declaredMember.name.name}';
866869
Message message;
867870
int fileOffset;
868871
if (declaredParameter == null) {

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

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@ import '../parser.dart' show lengthForToken, offsetForToken;
3131

3232
import '../problems.dart' show unhandled, unsupported;
3333

34-
import '../type_inference/type_inferrer.dart' show TypeInferrer;
35-
3634
import 'body_builder.dart' show noLocation;
3735

3836
import 'constness.dart' show Constness;
@@ -1122,14 +1120,6 @@ class KernelStaticAccessGenerator extends KernelGenerator
11221120
return write;
11231121
}
11241122

1125-
@override
1126-
DartType buildTypeWithBuiltArguments(List<DartType> arguments,
1127-
{bool nonInstanceAccessIsError: false, TypeInferrer typeInferrer}) {
1128-
return super.buildTypeWithBuiltArguments(arguments,
1129-
nonInstanceAccessIsError: nonInstanceAccessIsError,
1130-
typeInferrer: typeInferrer);
1131-
}
1132-
11331123
@override
11341124
Expression doInvocation(int offset, Arguments arguments) {
11351125
Expression error;

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1581,8 +1581,7 @@ class ListLiteralJudgment extends ListLiteral implements ExpressionJudgment {
15811581
isVoidAllowed: typeArgument is VoidType);
15821582
}
15831583
}
1584-
var inferredType = new InterfaceType(listClass, [inferredTypeArgument]);
1585-
this.inferredType = inferredType;
1584+
inferredType = new InterfaceType(listClass, [inferredTypeArgument]);
15861585
return null;
15871586
}
15881587
}
@@ -2217,8 +2216,7 @@ class StaticInvocationJudgment extends StaticInvocation
22172216
: new FunctionType([], const DynamicType());
22182217
var inferenceResult = inferrer.inferInvocation(typeContext, fileOffset,
22192218
calleeType, calleeType.returnType, argumentJudgments);
2220-
var inferredType = inferenceResult.type;
2221-
this.inferredType = inferredType;
2219+
inferredType = inferenceResult.type;
22222220
if (desugaredError != null) {
22232221
parent.replaceChild(this, desugaredError);
22242222
parent = null;
@@ -2422,6 +2420,7 @@ class SymbolLiteralJudgment extends SymbolLiteral
24222420
/// Synthetic judgment class representing an attempt to invoke an unresolved
24232421
/// constructor, or a constructor that cannot be invoked, or a resolved
24242422
/// constructor with wrong number of arguments.
2423+
// TODO(ahe): Remove this?
24252424
class InvalidConstructorInvocationJudgment extends SyntheticExpressionJudgment {
24262425
final Member constructor;
24272426
final Arguments arguments;

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ library fasta.kernel_type_variable_builder;
77
import 'package:kernel/ast.dart'
88
show DartType, TypeParameter, TypeParameterType;
99

10-
import '../deprecated_problems.dart' show deprecated_inputError;
11-
1210
import '../fasta_codes.dart' show templateTypeArgumentsOnTypeVariable;
1311

1412
import 'kernel_builder.dart'
@@ -66,11 +64,15 @@ class KernelTypeVariableBuilder
6664
DartType buildTypesWithBuiltArguments(
6765
LibraryBuilder library, List<DartType> arguments) {
6866
if (arguments != null) {
69-
return deprecated_inputError(null, null,
70-
"Can't use type arguments with type parameter $parameter");
71-
} else {
72-
return buildType(library, null);
67+
int charOffset = -1; // TODO(ahe): Provide these.
68+
Uri fileUri = null; // TODO(ahe): Provide these.
69+
library.addProblem(
70+
templateTypeArgumentsOnTypeVariable.withArguments(name),
71+
charOffset,
72+
name.length,
73+
fileUri);
7374
}
75+
return buildType(library, null);
7476
}
7577

7678
KernelTypeBuilder asTypeBuilder() {

pkg/front_end/lib/src/fasta/rewrite_severity.dart

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,12 @@ Severity rewriteSeverity(
4343
// sites.
4444
switch (path.substring(fastaPath.length + index)) {
4545
case "command_line.dart":
46-
case "command_line_reporting.dart":
4746
case "deprecated_problems.dart":
4847
case "entry_points.dart":
4948
case "kernel/body_builder.dart":
50-
case "kernel/expression_generator.dart":
51-
case "kernel/kernel_expression_generator.dart":
52-
case "kernel/kernel_expression_generator_impl.dart":
53-
case "kernel/kernel_type_variable_builder.dart":
5449
case "source/diet_listener.dart":
5550
case "source/source_library_builder.dart":
5651
case "source/source_loader.dart":
57-
case "source/stack_listener.dart":
5852
return severity;
5953
}
6054
} else if (code == msg.codeMissingExplicitTypeArguments) {

0 commit comments

Comments
 (0)