Move infer methods to visitor

Change-Id: Ia635e2c66c914621961f4ef165f67fb3e2759f07
Reviewed-on: https://dart-review.googlesource.com/c/78746
Reviewed-by: Kevin Millikin <kmillikin@google.com>
This commit is contained in:
Peter von der Ahé 2018-10-12 04:50:53 +00:00 committed by Peter von der Ahé
parent bd223d0ec4
commit 18110717fe
6 changed files with 1626 additions and 1228 deletions

View file

@ -4939,7 +4939,8 @@ Block combineStatements(Statement statement, Statement body) {
statement.parent = body;
return body;
} else {
return new Block(<Statement>[statement, body]);
return new Block(<Statement>[statement, body])
..fileOffset = statement.fileOffset;
}
}

File diff suppressed because it is too large Load diff

View file

@ -92,10 +92,20 @@ class ThisAccessGenerator extends KernelGenerator {
helper.lookupInstanceMember(name, isSuper: isSuper, isSetter: true);
if (isSuper) {
return new SuperPropertyAccessGenerator(
helper, send.token, name, getter, setter);
helper,
// TODO(ahe): This is not the 'super' token.
send.token,
name,
getter,
setter);
} else {
return new ThisPropertyAccessGenerator(
helper, send.token, name, getter, setter);
helper,
// TODO(ahe): This is not the 'this' token.
send.token,
name,
getter,
setter);
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -16,23 +16,22 @@ import 'package:kernel/ast.dart'
TypedefType,
VariableDeclaration;
import 'package:kernel/class_hierarchy.dart';
import 'package:kernel/class_hierarchy.dart' show ClassHierarchy;
import 'package:kernel/core_types.dart';
import 'package:kernel/core_types.dart' show CoreTypes;
import '../../base/instrumentation.dart';
import '../../base/instrumentation.dart' show Instrumentation;
import '../builder/library_builder.dart';
import '../kernel/kernel_builder.dart'
show LibraryBuilder, KernelLibraryBuilder;
import '../kernel/kernel_shadow_ast.dart';
import '../kernel/kernel_shadow_ast.dart' show ShadowField;
import '../messages.dart' show noLength, templateCantInferTypeDueToCircularity;
import '../source/source_library_builder.dart';
import 'type_inferrer.dart' show TypeInferrer, TypeInferrerImpl;
import 'type_inferrer.dart';
import 'type_schema_environment.dart';
import 'type_schema_environment.dart' show TypeSchemaEnvironment;
/// Concrete class derived from [InferenceNode] to represent type inference of a
/// field based on its initializer.
@ -239,7 +238,7 @@ abstract class TypeInferenceEngine {
/// Creates a type inferrer for use inside of a method body declared in a file
/// with the given [uri].
TypeInferrer createLocalTypeInferrer(
Uri uri, InterfaceType thisType, SourceLibraryBuilder library);
Uri uri, InterfaceType thisType, KernelLibraryBuilder library);
/// Creates a [TypeInferrer] object which is ready to perform type inference
/// on the given [field].

View file

@ -89,6 +89,8 @@ import '../fasta_codes.dart'
templateUndefinedMethod,
templateUndefinedSetter;
import '../kernel/kernel_builder.dart' show KernelLibraryBuilder;
import '../kernel/kernel_expression_generator.dart' show buildIsNull;
import '../kernel/kernel_shadow_ast.dart'
@ -106,8 +108,6 @@ import '../names.dart' show callName;
import '../problems.dart' show unexpected, unhandled;
import '../source/source_library_builder.dart' show SourceLibraryBuilder;
import '../source/source_loader.dart' show SourceLoader;
import 'inference_helper.dart' show InferenceHelper;
@ -548,7 +548,7 @@ abstract class TypeInferrerImpl extends TypeInferrer {
final InterfaceType thisType;
final SourceLibraryBuilder library;
final KernelLibraryBuilder library;
InferenceHelper helper;