@@ -93,11 +93,8 @@ import '../kernel/benchmarker.dart' show BenchmarkPhases, Benchmarker;
9393import '../kernel/dart_scope_calculator.dart' show DartScope, DartScopeBuilder2;
9494import '../kernel/hierarchy/hierarchy_builder.dart' show ClassHierarchyBuilder;
9595import '../kernel/internal_ast.dart'
96- show
97- VariableDeclarationImpl,
98- InternalVariableGet,
99- InternalVariableSet,
100- InternalVariable;
96+ show InternalVariableGet, InternalVariableSet, InternalVariable;
97+ import '../kernel/internal_ast_helper.dart' as intern;
10198import '../kernel/kernel_target.dart' show BuildResult, KernelTarget;
10299import '../source/check_helper.dart' ;
103100import '../source/source_compilation_unit.dart' show SourceCompilationUnitImpl;
@@ -1877,7 +1874,7 @@ class IncrementalCompiler implements IncrementalKernelGenerator {
18771874 return null ;
18781875 }
18791876 LibraryBuilder libraryBuilder = compilationUnit.libraryBuilder;
1880- List <VariableDeclarationImpl > extraKnownVariables = [];
1877+ List <InternalVariable > extraKnownVariables = [];
18811878 String ? usedMethodName = methodName;
18821879 Substitution ? substitution;
18831880 if (scriptUri != null && offset != TreeNode .noOffset) {
@@ -1942,8 +1939,11 @@ class IncrementalCompiler implements IncrementalKernelGenerator {
19421939 def.value.isConst &&
19431940 def.value.initializer is ConstantExpression ) {
19441941 extraKnownVariables.add (
1945- new VariableDeclarationImpl (
1946- def.key,
1942+ intern.createLocalVariable (
1943+ isClosureContextLoweringEnabled: lastGoodKernelTarget
1944+ .loader
1945+ .isClosureContextLoweringEnabled,
1946+ name: def.key,
19471947 type: substitution.substituteType (def.value.type),
19481948 isConst: true ,
19491949 hasDeclaredInitializer: true ,
@@ -1962,8 +1962,11 @@ class IncrementalCompiler implements IncrementalKernelGenerator {
19621962 // captured? Either way there's something shadowing any fields
19631963 // etc.
19641964 extraKnownVariables.add (
1965- new VariableDeclarationImpl (
1966- def.key,
1965+ intern.createLocalVariable (
1966+ isClosureContextLoweringEnabled: lastGoodKernelTarget
1967+ .loader
1968+ .isClosureContextLoweringEnabled,
1969+ name: def.key,
19671970 type: substitution.substituteType (def.value.type),
19681971 isConst: false ,
19691972 fileOffset: def.value.fileOffset,
@@ -2225,7 +2228,7 @@ class IncrementalCompiler implements IncrementalKernelGenerator {
22252228 MemoryFileSystem fs = hfs.memory;
22262229 fs.entityForUri (debugExprUri).writeAsStringSync (expression);
22272230
2228- Variable ? extensionThis;
2231+ InternalVariable ? extensionThis;
22292232
22302233 // TODO: pass variable declarations instead of
22312234 // parameter names for proper location detection.
@@ -2236,8 +2239,10 @@ class IncrementalCompiler implements IncrementalKernelGenerator {
22362239 positionalParameters: usedDefinitions.entries.map <Variable >((
22372240 MapEntry <String , DartType > def,
22382241 ) {
2239- VariableDeclarationImpl variable = new VariableDeclarationImpl (
2240- def.key,
2242+ InternalVariable variable = intern.createPositionalParameter (
2243+ isClosureContextLoweringEnabled:
2244+ lastGoodKernelTarget.loader.isClosureContextLoweringEnabled,
2245+ cosmeticName: def.key,
22412246 type: def.value,
22422247 fileOffset: offsetToUse ?? libraryBuilder.library.fileOffset,
22432248 );
@@ -2248,7 +2253,7 @@ class IncrementalCompiler implements IncrementalKernelGenerator {
22482253 // The `#this` variable is special.
22492254 extensionThis = variable..isLowered = true ;
22502255 }
2251- return variable;
2256+ return variable.astVariable ;
22522257 }).toList (),
22532258 );
22542259
@@ -2390,13 +2395,18 @@ class IncrementalCompiler implements IncrementalKernelGenerator {
23902395 String path = importUri.path;
23912396 int firstSlash = path.indexOf ('/' );
23922397 String packageName = path.substring (0 , firstSlash);
2398+ Package ? previousPackage = _previousPackagesMap? [packageName];
2399+ Package ? currentPackage = _currentPackagesMap! [packageName];
23932400 if (_previousPackagesMap == null ||
2394- ! _packagesEqual (
2395- _previousPackagesMap! [packageName],
2396- _currentPackagesMap! [packageName],
2397- )) {
2401+ ! _packagesEqual (previousPackage, currentPackage)) {
2402+ // TODO(jensj): If the package has changed do we need to check the
2403+ // uri/language version before bailing? If for instance we don't care
2404+ // about the "extraData" field, we should probably just not check that
2405+ // in "_packagesEqual".
23982406 Uri ? newFileUri = uriTranslator.translate (importUri, false );
2399- if (newFileUri != fileUri) {
2407+ if (newFileUri != fileUri ||
2408+ previousPackage? .languageVersion !=
2409+ currentPackage? .languageVersion) {
24002410 invalidatedBecauseOfPackageUpdate = true ;
24012411 return true ;
24022412 }
@@ -2555,10 +2565,10 @@ class ExpressionEvaluationHelperImpl implements ExpressionEvaluationHelper {
25552565 final ClassHierarchy hierarchy;
25562566
25572567 ExpressionEvaluationHelperImpl (
2558- List <VariableDeclarationImpl > extraKnown,
2568+ List <InternalVariable > extraKnown,
25592569 this .hierarchy,
25602570 ) {
2561- for (VariableDeclarationImpl variable in extraKnown) {
2571+ for (InternalVariable variable in extraKnown) {
25622572 if (variable.isConst) {
25632573 // We allow const variables - these are inlined (we check
25642574 // `alwaysInlineConstants` in `compileExpression`).
0 commit comments