diff --git a/pkg/front_end/lib/src/fasta/builder/metadata_builder.dart b/pkg/front_end/lib/src/fasta/builder/metadata_builder.dart index f0e52a4f1e9..20a0b7ebe8d 100644 --- a/pkg/front_end/lib/src/fasta/builder/metadata_builder.dart +++ b/pkg/front_end/lib/src/fasta/builder/metadata_builder.dart @@ -25,15 +25,22 @@ class MetadataBuilder { BodyBuilderContext bodyBuilderContext, SourceLibraryBuilder library, Uri fileUri, - Scope scope) { + Scope scope, + {bool createFileUriExpression = false}) { if (metadata == null) return; BodyBuilder bodyBuilder = library.loader .createBodyBuilderForOutlineExpression( library, bodyBuilderContext, scope, fileUri); for (int i = 0; i < metadata.length; ++i) { MetadataBuilder annotationBuilder = metadata[i]; - parent.addAnnotation( - bodyBuilder.parseAnnotation(annotationBuilder.beginToken)); + Expression annotation = + bodyBuilder.parseAnnotation(annotationBuilder.beginToken); + if (createFileUriExpression) { + parent.addAnnotation(new FileUriExpression(annotation, fileUri) + ..fileOffset = annotationBuilder.beginToken.charOffset); + } else { + parent.addAnnotation(annotation); + } } bodyBuilder.inferAnnotations(parent, parent.annotations); bodyBuilder.performBacklogComputations(allowFurtherDelays: false); diff --git a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart index 762a9c77d35..9cccf597986 100644 --- a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart +++ b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart @@ -2225,9 +2225,15 @@ class ConstantsTransformer extends RemovingTransformer { constant.expression is InvalidExpression) { return constant.expression; } - return new ConstantExpression( - constant, node.getStaticType(staticTypeContext)) - ..fileOffset = node.fileOffset; + ConstantExpression constantExpression = + new ConstantExpression(constant, node.getStaticType(staticTypeContext)) + ..fileOffset = node.fileOffset; + if (node is FileUriExpression) { + return new FileUriConstantExpression(constantExpression.constant, + type: constantExpression.type, fileUri: node.fileUri) + ..fileOffset = node.fileOffset; + } + return constantExpression; } bool shouldInline(Expression initializer) { diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_helper.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_helper.dart index 0d14819a24f..b58a19c1f63 100644 --- a/pkg/front_end/lib/src/fasta/kernel/kernel_helper.dart +++ b/pkg/front_end/lib/src/fasta/kernel/kernel_helper.dart @@ -301,37 +301,51 @@ class TypeDependency { } } +/// Removes [FileUriExpression] nodes for annotations whose file URI is +/// [annotatableFileUri], the file URI of the [annotatable]. +/// +/// This is an optimization to avoid unnecessary [FileUriConstantExpression] +/// nodes in the generated AST. +void adjustAnnotationFileUri(Annotatable annotatable, Uri annotatableFileUri) { + List annotations = annotatable.annotations; + for (int i = 0; i < annotations.length; i++) { + Expression annotation = annotations[i]; + if (annotation is FileUriExpression && + annotation.fileUri == annotatableFileUri) { + annotations[i] = annotation.expression..parent = annotatable; + } + } +} + /// Copies properties, function parameters and body from the [patch] constructor /// to its [origin]. void finishConstructorPatch(Constructor origin, Constructor patch) { - // TODO(ahe): restore file-offset once we track both origin and patch file - // URIs. See https://github.com/dart-lang/sdk/issues/31579 origin.fileUri = patch.fileUri; origin.startFileOffset = patch.startFileOffset; origin.fileOffset = patch.fileOffset; origin.fileEndOffset = patch.fileEndOffset; - origin.annotations.forEach((m) => m.fileOffset = patch.fileOffset); origin.isExternal = patch.isExternal; origin.function = patch.function; origin.function.parent = origin; origin.initializers = patch.initializers; setParents(origin.initializers, origin); + + adjustAnnotationFileUri(origin, origin.fileUri); } /// Copies properties, function parameters and body from the [patch] procedure /// to its [origin]. void finishProcedurePatch(Procedure origin, Procedure patch) { - // TODO(ahe): restore file-offset once we track both origin and patch file - // URIs. See https://github.com/dart-lang/sdk/issues/31579 origin.fileUri = patch.fileUri; origin.fileStartOffset = patch.fileStartOffset; origin.fileOffset = patch.fileOffset; origin.fileEndOffset = patch.fileEndOffset; - origin.annotations.forEach((m) => m.fileOffset = patch.fileOffset); origin.isAbstract = patch.isAbstract; origin.isExternal = patch.isExternal; origin.function = patch.function; origin.function.parent = origin; + + adjustAnnotationFileUri(origin, origin.fileUri); } diff --git a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart index c60a2f6bda5..e450ef3245c 100644 --- a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart +++ b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart @@ -372,7 +372,8 @@ class SourceClassBuilder extends ClassBuilderImpl } MetadataBuilder.buildAnnotations(isPatch ? origin.cls : cls, metadata, - bodyBuilderContext, libraryBuilder, fileUri, libraryBuilder.scope); + bodyBuilderContext, libraryBuilder, fileUri, libraryBuilder.scope, + createFileUriExpression: isPatch); if (typeVariables != null) { for (int i = 0; i < typeVariables!.length; i++) { typeVariables![i].buildOutlineExpressions( @@ -1116,11 +1117,7 @@ class SourceClassBuilder extends ClassBuilderImpl } int buildBodyNodes() { - // TODO(ahe): restore file-offset once we track both origin and patch file - // URIs. See https://github.com/dart-lang/sdk/issues/31579 - if (isPatch) { - cls.annotations.forEach((m) => m.fileOffset = origin.cls.fileOffset); - } + adjustAnnotationFileUri(cls, cls.fileUri); int count = 0; diff --git a/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart b/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart index 77549228087..b7b38d7297e 100644 --- a/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart +++ b/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart @@ -932,6 +932,15 @@ class DeclaredSourceConstructorBuilder // TODO(johnniwinther): Add annotations to tear-offs. @override Iterable get annotatables => [constructor]; + + @override + bool get isAugmented { + if (isPatch) { + return origin._patches!.last != this; + } else { + return _patches != null; + } + } } class SyntheticSourceConstructorBuilder extends DillConstructorBuilder @@ -1293,6 +1302,9 @@ class SourceInlineClassConstructorBuilder // TODO(johnniwinther): Add annotations to tear-offs. @override Iterable get annotatables => [_constructor]; + + @override + bool get isAugmented => false; } class InlineClassInitializerToStatementConverter diff --git a/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart b/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart index c32bcc24095..c82006b9761 100644 --- a/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart +++ b/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart @@ -321,6 +321,15 @@ class SourceFactoryBuilder extends SourceFunctionBuilderImpl { // TODO(johnniwinther): Add annotations to tear-offs. @override Iterable get annotatables => [_procedure]; + + @override + bool get isAugmented { + if (isPatch) { + return origin._patches!.last != this; + } else { + return _patches != null; + } + } } class RedirectingFactoryBuilder extends SourceFactoryBuilder { diff --git a/pkg/front_end/lib/src/fasta/source/source_function_builder.dart b/pkg/front_end/lib/src/fasta/source/source_function_builder.dart index 714546d9520..a38e589ad54 100644 --- a/pkg/front_end/lib/src/fasta/source/source_function_builder.dart +++ b/pkg/front_end/lib/src/fasta/source/source_function_builder.dart @@ -206,6 +206,10 @@ abstract class SourceFunctionBuilderImpl extends SourceMemberBuilderImpl @override bool get isAssignable => false; + /// Returns `true` if this member is augmented, either by being the origin + /// of a augmented member or by not being the last among augmentations. + bool get isAugmented; + @override Scope computeFormalParameterScope(Scope parent) { if (formals == null) return parent; @@ -479,7 +483,8 @@ abstract class SourceFunctionBuilderImpl extends SourceMemberBuilderImpl classOrExtensionBuilder?.scope ?? libraryBuilder.scope; for (Annotatable annotatable in annotatables) { MetadataBuilder.buildAnnotations(annotatable, metadata, - bodyBuilderContext, libraryBuilder, fileUri, parentScope); + bodyBuilderContext, libraryBuilder, fileUri, parentScope, + createFileUriExpression: isAugmented); } if (typeVariables != null) { for (int i = 0; i < typeVariables!.length; i++) { diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart index 9303c97be1f..56890d32e11 100644 --- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart +++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart @@ -3343,7 +3343,8 @@ class SourceLibraryBuilder extends LibraryBuilderImpl { } MetadataBuilder.buildAnnotations( - library, metadata, bodyBuilderContext, this, fileUri, scope); + library, metadata, bodyBuilderContext, this, fileUri, scope, + createFileUriExpression: isPatch); Iterator iterator = localMembersIterator; while (iterator.moveNext()) { diff --git a/pkg/front_end/lib/src/fasta/source/source_loader.dart b/pkg/front_end/lib/src/fasta/source/source_loader.dart index acafdb2856c..490ca6cebba 100644 --- a/pkg/front_end/lib/src/fasta/source/source_loader.dart +++ b/pkg/front_end/lib/src/fasta/source/source_loader.dart @@ -933,6 +933,8 @@ severity: $severity // and the VM does not support that. Also, what would, for instance, // setting a breakpoint on line 42 of some import uri mean, if the uri // represented several files? + // TODO(johnniwinther): Replace this with something that supports + // augmentation libraries. List newPathSegments = new List.of(importUri.pathSegments); newPathSegments.add(libraryBuilder.fileUri.pathSegments.last); diff --git a/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart b/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart index b29dd2f7d71..a2332f2fe7f 100644 --- a/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart +++ b/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart @@ -640,6 +640,15 @@ class SourceProcedureBuilder extends SourceFunctionBuilderImpl // TODO(johnniwinther): Add annotations to tear-offs. @override Iterable get annotatables => [procedure]; + + @override + bool get isAugmented { + if (isPatch) { + return origin._patches!.last != this; + } else { + return _patches != null; + } + } } class SourceProcedureMember extends BuilderClassMember { diff --git a/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart b/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart index 03d870881ca..a6fa9d10e87 100644 --- a/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart +++ b/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart @@ -526,7 +526,10 @@ class InferenceVisitorImpl extends InferenceVisitorBase @override ExpressionInferenceResult visitFileUriExpression( FileUriExpression node, DartType typeContext) { - return _unhandledExpression(node, typeContext); + ExpressionInferenceResult result = + inferExpression(node.expression, typeContext); + node.expression = result.expression..parent = node; + return new ExpressionInferenceResult(result.inferredType, node); } @override diff --git a/pkg/front_end/test/utils/kernel_chain.dart b/pkg/front_end/test/utils/kernel_chain.dart index 871318ce64b..1e265d6e20f 100644 --- a/pkg/front_end/test/utils/kernel_chain.dart +++ b/pkg/front_end/test/utils/kernel_chain.dart @@ -518,6 +518,7 @@ class ComponentResult { } bool isUserLibraryImportUri(Uri? importUri) { + // TODO(johnniwinther): Support patch libraries user libraries. return userLibraries.contains(importUri); } diff --git a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.strong.expect b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.strong.expect index 93ce634ed24..ff5639b336b 100644 --- a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.strong.expect +++ b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.strong.expect @@ -29,7 +29,7 @@ import "dart:_internal"; typedef Alias = test::Class; typedef AliasImpl = test::ClassImpl; -@#C13 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C13 class Class extends core::Object { @#C13 constructor •({core::bool defaultValue = #C14, required test::Class::T% value = #C15}) → test::Class @@ -54,7 +54,7 @@ class Class extends core::Object { static method /* from org-dartlang-testcase:///patch_lib.dart */ _#redirect2#tearOff({core::bool defaultValue = #C14, required test::Class::_#redirect2#tearOff::T% value = #C15}) → test::Class return new test::ClassImpl::patched(defaultValue: defaultValue, value: value); } -@#C13 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C13 class ClassImpl extends core::Object implements test::Class { constructor •({core::bool defaultValue = #C14, required test::ClassImpl::T% value = #C15}) → test::ClassImpl : super core::Object::•() diff --git a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.expect b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.expect index 93ce634ed24..ff5639b336b 100644 --- a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.expect +++ b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.expect @@ -29,7 +29,7 @@ import "dart:_internal"; typedef Alias = test::Class; typedef AliasImpl = test::ClassImpl; -@#C13 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C13 class Class extends core::Object { @#C13 constructor •({core::bool defaultValue = #C14, required test::Class::T% value = #C15}) → test::Class @@ -54,7 +54,7 @@ class Class extends core::Object { static method /* from org-dartlang-testcase:///patch_lib.dart */ _#redirect2#tearOff({core::bool defaultValue = #C14, required test::Class::_#redirect2#tearOff::T% value = #C15}) → test::Class return new test::ClassImpl::patched(defaultValue: defaultValue, value: value); } -@#C13 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C13 class ClassImpl extends core::Object implements test::Class { constructor •({core::bool defaultValue = #C14, required test::ClassImpl::T% value = #C15}) → test::ClassImpl : super core::Object::•() diff --git a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.modular.expect b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.modular.expect index 93ce634ed24..ff5639b336b 100644 --- a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.modular.expect @@ -29,7 +29,7 @@ import "dart:_internal"; typedef Alias = test::Class; typedef AliasImpl = test::ClassImpl; -@#C13 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C13 class Class extends core::Object { @#C13 constructor •({core::bool defaultValue = #C14, required test::Class::T% value = #C15}) → test::Class @@ -54,7 +54,7 @@ class Class extends core::Object { static method /* from org-dartlang-testcase:///patch_lib.dart */ _#redirect2#tearOff({core::bool defaultValue = #C14, required test::Class::_#redirect2#tearOff::T% value = #C15}) → test::Class return new test::ClassImpl::patched(defaultValue: defaultValue, value: value); } -@#C13 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C13 class ClassImpl extends core::Object implements test::Class { constructor •({core::bool defaultValue = #C14, required test::ClassImpl::T% value = #C15}) → test::ClassImpl : super core::Object::•() diff --git a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.outline.expect b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.outline.expect index a7e481e4a59..2a40210184f 100644 --- a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.outline.expect @@ -62,11 +62,11 @@ static method _#AliasImpl#patched#tearOff({has-declared-ini Extra constant evaluation status: -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:6:46 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:8:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:7:8 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:8:27 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:12:21 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:15:10 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:18:36 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:27:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:19:45 -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 49, effectively constant: 7 diff --git a/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.strong.expect b/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.strong.expect index c492c25b951..742c6c51da8 100644 --- a/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.strong.expect +++ b/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.strong.expect @@ -15,7 +15,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { final field core::bool defaultValue /* from org-dartlang-testcase:///patch_lib.dart */; const constructor _internal({core::bool defaultValue = #C2}) → test::Class diff --git a/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.weak.expect b/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.weak.expect index c492c25b951..742c6c51da8 100644 --- a/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.weak.expect +++ b/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.weak.expect @@ -15,7 +15,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { final field core::bool defaultValue /* from org-dartlang-testcase:///patch_lib.dart */; const constructor _internal({core::bool defaultValue = #C2}) → test::Class diff --git a/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.weak.modular.expect b/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.weak.modular.expect index c492c25b951..742c6c51da8 100644 --- a/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.weak.modular.expect @@ -15,7 +15,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { final field core::bool defaultValue /* from org-dartlang-testcase:///patch_lib.dart */; const constructor _internal({core::bool defaultValue = #C2}) → test::Class diff --git a/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.weak.outline.expect b/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.weak.outline.expect index 2d35f60356a..c309efe8955 100644 --- a/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.weak.outline.expect @@ -33,7 +33,7 @@ class Class extends core::Object { Extra constant evaluation status: -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:6:49 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:8:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:8:26 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 10, effectively constant: 3 diff --git a/pkg/front_end/testcases/general/constructor_patch/main.dart.strong.expect b/pkg/front_end/testcases/general/constructor_patch/main.dart.strong.expect index 515ddfb9791..bbbf1ec5702 100644 --- a/pkg/front_end/testcases/general/constructor_patch/main.dart.strong.expect +++ b/pkg/front_end/testcases/general/constructor_patch/main.dart.strong.expect @@ -35,7 +35,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C3 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C3 class Class extends core::Object /*hasConstConstructor*/ { final field core::bool defaultValue /* from org-dartlang-testcase:///patch_lib.dart */; constructor _privateInjected() → test::Class @@ -60,7 +60,7 @@ class Class extends core::Object /*hasConstConstructor*/ { : test::Class::defaultValue = true, super core::Object::•() ; } -@#C3 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C3 class Class2 extends core::Object { final field core::int injectedField /* from org-dartlang-testcase:///patch_lib.dart */; field core::int field; diff --git a/pkg/front_end/testcases/general/constructor_patch/main.dart.weak.expect b/pkg/front_end/testcases/general/constructor_patch/main.dart.weak.expect index 515ddfb9791..bbbf1ec5702 100644 --- a/pkg/front_end/testcases/general/constructor_patch/main.dart.weak.expect +++ b/pkg/front_end/testcases/general/constructor_patch/main.dart.weak.expect @@ -35,7 +35,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C3 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C3 class Class extends core::Object /*hasConstConstructor*/ { final field core::bool defaultValue /* from org-dartlang-testcase:///patch_lib.dart */; constructor _privateInjected() → test::Class @@ -60,7 +60,7 @@ class Class extends core::Object /*hasConstConstructor*/ { : test::Class::defaultValue = true, super core::Object::•() ; } -@#C3 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C3 class Class2 extends core::Object { final field core::int injectedField /* from org-dartlang-testcase:///patch_lib.dart */; field core::int field; diff --git a/pkg/front_end/testcases/general/constructor_patch/main.dart.weak.modular.expect b/pkg/front_end/testcases/general/constructor_patch/main.dart.weak.modular.expect index 515ddfb9791..bbbf1ec5702 100644 --- a/pkg/front_end/testcases/general/constructor_patch/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/constructor_patch/main.dart.weak.modular.expect @@ -35,7 +35,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C3 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C3 class Class extends core::Object /*hasConstConstructor*/ { final field core::bool defaultValue /* from org-dartlang-testcase:///patch_lib.dart */; constructor _privateInjected() → test::Class @@ -60,7 +60,7 @@ class Class extends core::Object /*hasConstConstructor*/ { : test::Class::defaultValue = true, super core::Object::•() ; } -@#C3 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C3 class Class2 extends core::Object { final field core::int injectedField /* from org-dartlang-testcase:///patch_lib.dart */; field core::int field; diff --git a/pkg/front_end/testcases/general/constructor_patch/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/constructor_patch/main.dart.weak.outline.expect index c802b90405c..a591fafde92 100644 --- a/pkg/front_end/testcases/general/constructor_patch/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/general/constructor_patch/main.dart.weak.outline.expect @@ -51,10 +51,10 @@ static method test() → dynamic Extra constant evaluation status: -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:6:49 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:8:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:7:43 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///patch_lib.dart:16:9 -> InstanceConstant(const _Patch{}) +Evaluated: StaticGet @ org-dartlang-testcase:///patch_lib.dart:15:4 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:17:8 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:24:60 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:28:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 7, effectively constant: 6 diff --git a/pkg/front_end/testcases/general/factory_patch/main.dart.strong.expect b/pkg/front_end/testcases/general/factory_patch/main.dart.strong.expect index 4491cffa907..55092a255ae 100644 --- a/pkg/front_end/testcases/general/factory_patch/main.dart.strong.expect +++ b/pkg/front_end/testcases/general/factory_patch/main.dart.strong.expect @@ -23,7 +23,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { final field core::bool defaultValue /* from org-dartlang-testcase:///patch_lib.dart */; const constructor _internal({core::bool defaultValue = #C2}) → test::Class diff --git a/pkg/front_end/testcases/general/factory_patch/main.dart.weak.expect b/pkg/front_end/testcases/general/factory_patch/main.dart.weak.expect index 4491cffa907..55092a255ae 100644 --- a/pkg/front_end/testcases/general/factory_patch/main.dart.weak.expect +++ b/pkg/front_end/testcases/general/factory_patch/main.dart.weak.expect @@ -23,7 +23,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { final field core::bool defaultValue /* from org-dartlang-testcase:///patch_lib.dart */; const constructor _internal({core::bool defaultValue = #C2}) → test::Class diff --git a/pkg/front_end/testcases/general/factory_patch/main.dart.weak.modular.expect b/pkg/front_end/testcases/general/factory_patch/main.dart.weak.modular.expect index 4491cffa907..55092a255ae 100644 --- a/pkg/front_end/testcases/general/factory_patch/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/factory_patch/main.dart.weak.modular.expect @@ -23,7 +23,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { final field core::bool defaultValue /* from org-dartlang-testcase:///patch_lib.dart */; const constructor _internal({core::bool defaultValue = #C2}) → test::Class diff --git a/pkg/front_end/testcases/general/factory_patch/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/factory_patch/main.dart.weak.outline.expect index 4eacaec7056..b175e2aef17 100644 --- a/pkg/front_end/testcases/general/factory_patch/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/general/factory_patch/main.dart.weak.outline.expect @@ -30,8 +30,8 @@ class Class extends core::Object { Extra constant evaluation status: -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:6:49 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:8:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:8:26 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///patch_lib.dart:22:17 -> InstanceConstant(const _Patch{}) +Evaluated: StaticGet @ org-dartlang-testcase:///patch_lib.dart:21:4 -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 7, effectively constant: 4 diff --git a/pkg/front_end/testcases/general/inject_private_patch/main.dart.strong.expect b/pkg/front_end/testcases/general/inject_private_patch/main.dart.strong.expect index 689f23c043f..0b8dfde3242 100644 --- a/pkg/front_end/testcases/general/inject_private_patch/main.dart.strong.expect +++ b/pkg/front_end/testcases/general/inject_private_patch/main.dart.strong.expect @@ -48,8 +48,8 @@ import "dart:core" as core; import "dart:_internal"; import "dart:_internal"; -@#C1 -@#C1 +@/* from org-dartlang-testcase:///patch_lib1.dart */ #C1 +@/* from org-dartlang-testcase:///patch_lib2.dart */ #C1 class Class extends core::Object { synthetic constructor •() → self2::Class : super core::Object::•() diff --git a/pkg/front_end/testcases/general/inject_private_patch/main.dart.weak.expect b/pkg/front_end/testcases/general/inject_private_patch/main.dart.weak.expect index 689f23c043f..0b8dfde3242 100644 --- a/pkg/front_end/testcases/general/inject_private_patch/main.dart.weak.expect +++ b/pkg/front_end/testcases/general/inject_private_patch/main.dart.weak.expect @@ -48,8 +48,8 @@ import "dart:core" as core; import "dart:_internal"; import "dart:_internal"; -@#C1 -@#C1 +@/* from org-dartlang-testcase:///patch_lib1.dart */ #C1 +@/* from org-dartlang-testcase:///patch_lib2.dart */ #C1 class Class extends core::Object { synthetic constructor •() → self2::Class : super core::Object::•() diff --git a/pkg/front_end/testcases/general/inject_private_patch/main.dart.weak.modular.expect b/pkg/front_end/testcases/general/inject_private_patch/main.dart.weak.modular.expect index 689f23c043f..0b8dfde3242 100644 --- a/pkg/front_end/testcases/general/inject_private_patch/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/inject_private_patch/main.dart.weak.modular.expect @@ -48,8 +48,8 @@ import "dart:core" as core; import "dart:_internal"; import "dart:_internal"; -@#C1 -@#C1 +@/* from org-dartlang-testcase:///patch_lib1.dart */ #C1 +@/* from org-dartlang-testcase:///patch_lib2.dart */ #C1 class Class extends core::Object { synthetic constructor •() → self2::Class : super core::Object::•() diff --git a/pkg/front_end/testcases/general/inject_private_patch/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/inject_private_patch/main.dart.weak.outline.expect index e0533831a43..c687cc2a4b3 100644 --- a/pkg/front_end/testcases/general/inject_private_patch/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/general/inject_private_patch/main.dart.weak.outline.expect @@ -88,6 +88,6 @@ static method /* from org-dartlang-testcase:///patch_lib2.dart */ _privateInject Extra constant evaluation status: -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:7:8 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:7:8 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib1.dart:8:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib2.dart:8:1 -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 2, effectively constant: 2 diff --git a/pkg/front_end/testcases/general/inject_public/main.dart.strong.expect b/pkg/front_end/testcases/general/inject_public/main.dart.strong.expect index 59234de6062..46edd731622 100644 --- a/pkg/front_end/testcases/general/inject_public/main.dart.strong.expect +++ b/pkg/front_end/testcases/general/inject_public/main.dart.strong.expect @@ -38,7 +38,7 @@ class InjectedClass extends core::Object { // from org-dartlang-testcase:///patc : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() diff --git a/pkg/front_end/testcases/general/inject_public/main.dart.weak.expect b/pkg/front_end/testcases/general/inject_public/main.dart.weak.expect index 59234de6062..46edd731622 100644 --- a/pkg/front_end/testcases/general/inject_public/main.dart.weak.expect +++ b/pkg/front_end/testcases/general/inject_public/main.dart.weak.expect @@ -38,7 +38,7 @@ class InjectedClass extends core::Object { // from org-dartlang-testcase:///patc : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() diff --git a/pkg/front_end/testcases/general/inject_public/main.dart.weak.modular.expect b/pkg/front_end/testcases/general/inject_public/main.dart.weak.modular.expect index 59234de6062..46edd731622 100644 --- a/pkg/front_end/testcases/general/inject_public/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/inject_public/main.dart.weak.modular.expect @@ -38,7 +38,7 @@ class InjectedClass extends core::Object { // from org-dartlang-testcase:///patc : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() diff --git a/pkg/front_end/testcases/general/inject_public/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/inject_public/main.dart.weak.outline.expect index ecc25ebf28d..f5b52c83435 100644 --- a/pkg/front_end/testcases/general/inject_public/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/general/inject_public/main.dart.weak.outline.expect @@ -44,5 +44,5 @@ static method /* from org-dartlang-testcase:///patch_lib.dart */ injectedMethod( Extra constant evaluation status: -Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:12:1 -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 1, effectively constant: 1 diff --git a/pkg/front_end/testcases/general/issue45101/main.dart.strong.expect b/pkg/front_end/testcases/general/issue45101/main.dart.strong.expect index 550491b7160..375479e4d71 100644 --- a/pkg/front_end/testcases/general/issue45101/main.dart.strong.expect +++ b/pkg/front_end/testcases/general/issue45101/main.dart.strong.expect @@ -18,8 +18,8 @@ class _ArraySize extends core::Object impleme : self2::_ArraySize::foo = foo, super core::Object::•() ; } -@#C1 -@#C4 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C4 class Array extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •(core::int foo) → self2::Array /* redirection-target: self2::_ArraySize::•*/ @@ -32,9 +32,3 @@ constants { #C3 = null #C4 = core::pragma {name:#C2, options:#C3} } - - -Constructor coverage from constants: -org-dartlang-testcase:///origin_lib.dart: -- pragma._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart) -- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart) diff --git a/pkg/front_end/testcases/general/issue45101/main.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue45101/main.dart.strong.transformed.expect index 550491b7160..c8d2f42f54d 100644 --- a/pkg/front_end/testcases/general/issue45101/main.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/general/issue45101/main.dart.strong.transformed.expect @@ -32,9 +32,3 @@ constants { #C3 = null #C4 = core::pragma {name:#C2, options:#C3} } - - -Constructor coverage from constants: -org-dartlang-testcase:///origin_lib.dart: -- pragma._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart) -- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart) diff --git a/pkg/front_end/testcases/general/issue45101/main.dart.weak.expect b/pkg/front_end/testcases/general/issue45101/main.dart.weak.expect index 550491b7160..375479e4d71 100644 --- a/pkg/front_end/testcases/general/issue45101/main.dart.weak.expect +++ b/pkg/front_end/testcases/general/issue45101/main.dart.weak.expect @@ -18,8 +18,8 @@ class _ArraySize extends core::Object impleme : self2::_ArraySize::foo = foo, super core::Object::•() ; } -@#C1 -@#C4 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C4 class Array extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •(core::int foo) → self2::Array /* redirection-target: self2::_ArraySize::•*/ @@ -32,9 +32,3 @@ constants { #C3 = null #C4 = core::pragma {name:#C2, options:#C3} } - - -Constructor coverage from constants: -org-dartlang-testcase:///origin_lib.dart: -- pragma._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart) -- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart) diff --git a/pkg/front_end/testcases/general/issue45101/main.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue45101/main.dart.weak.modular.expect index 550491b7160..375479e4d71 100644 --- a/pkg/front_end/testcases/general/issue45101/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/issue45101/main.dart.weak.modular.expect @@ -18,8 +18,8 @@ class _ArraySize extends core::Object impleme : self2::_ArraySize::foo = foo, super core::Object::•() ; } -@#C1 -@#C4 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C4 class Array extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •(core::int foo) → self2::Array /* redirection-target: self2::_ArraySize::•*/ @@ -32,9 +32,3 @@ constants { #C3 = null #C4 = core::pragma {name:#C2, options:#C3} } - - -Constructor coverage from constants: -org-dartlang-testcase:///origin_lib.dart: -- pragma._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart) -- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart) diff --git a/pkg/front_end/testcases/general/issue45101/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue45101/main.dart.weak.outline.expect index 09219cb81dc..cce9288fefe 100644 --- a/pkg/front_end/testcases/general/issue45101/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/general/issue45101/main.dart.weak.outline.expect @@ -20,7 +20,7 @@ class _ArraySize extends core::Object impleme ; } @_in::patch -@core::pragma::_("vm:entry-point") +@const core::pragma::_("vm:entry-point") class Array extends core::Object { @_in::patch static factory /* from org-dartlang-testcase:///patch_lib.dart */ •(core::int foo) → self2::Array /* redirection-target: self2::_ArraySize::•*/ @@ -29,7 +29,7 @@ class Array extends core::Object { Extra constant evaluation status: -Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) -Evaluated: ConstructorInvocation @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const pragma{pragma.name: "vm:entry-point", pragma.options: null}) -Evaluated: StaticGet @ org-dartlang-testcase:///patch_lib.dart:14:17 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:8:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:9:1 -> InstanceConstant(const pragma{pragma.name: "vm:entry-point", pragma.options: null}) +Evaluated: StaticGet @ org-dartlang-testcase:///patch_lib.dart:13:4 -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 6, effectively constant: 3 diff --git a/pkg/front_end/testcases/general/issue45101/main.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue45101/main.dart.weak.transformed.expect index 550491b7160..c8d2f42f54d 100644 --- a/pkg/front_end/testcases/general/issue45101/main.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/issue45101/main.dart.weak.transformed.expect @@ -32,9 +32,3 @@ constants { #C3 = null #C4 = core::pragma {name:#C2, options:#C3} } - - -Constructor coverage from constants: -org-dartlang-testcase:///origin_lib.dart: -- pragma._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart) -- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart) diff --git a/pkg/front_end/testcases/general/mixin_from_patch/main.dart.strong.expect b/pkg/front_end/testcases/general/mixin_from_patch/main.dart.strong.expect index 3861b7feff4..f808d0db033 100644 --- a/pkg/front_end/testcases/general/mixin_from_patch/main.dart.strong.expect +++ b/pkg/front_end/testcases/general/mixin_from_patch/main.dart.strong.expect @@ -18,7 +18,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { constructor _internal({core::bool value = #C2}) → test::Class : super core::Object::•() @@ -44,7 +44,7 @@ abstract class _SubClass&Class&Mixin = test::Class with test::Mixin /*isAnonymou : super test::Class::_internal(value: value) ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class SubClass extends test::_SubClass&Class&Mixin { constructor _internal() → test::SubClass : super test::_SubClass&Class&Mixin::_internal(value: true) diff --git a/pkg/front_end/testcases/general/mixin_from_patch/main.dart.weak.expect b/pkg/front_end/testcases/general/mixin_from_patch/main.dart.weak.expect index 3861b7feff4..f808d0db033 100644 --- a/pkg/front_end/testcases/general/mixin_from_patch/main.dart.weak.expect +++ b/pkg/front_end/testcases/general/mixin_from_patch/main.dart.weak.expect @@ -18,7 +18,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { constructor _internal({core::bool value = #C2}) → test::Class : super core::Object::•() @@ -44,7 +44,7 @@ abstract class _SubClass&Class&Mixin = test::Class with test::Mixin /*isAnonymou : super test::Class::_internal(value: value) ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class SubClass extends test::_SubClass&Class&Mixin { constructor _internal() → test::SubClass : super test::_SubClass&Class&Mixin::_internal(value: true) diff --git a/pkg/front_end/testcases/general/mixin_from_patch/main.dart.weak.modular.expect b/pkg/front_end/testcases/general/mixin_from_patch/main.dart.weak.modular.expect index 3861b7feff4..f808d0db033 100644 --- a/pkg/front_end/testcases/general/mixin_from_patch/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/mixin_from_patch/main.dart.weak.modular.expect @@ -18,7 +18,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { constructor _internal({core::bool value = #C2}) → test::Class : super core::Object::•() @@ -44,7 +44,7 @@ abstract class _SubClass&Class&Mixin = test::Class with test::Mixin /*isAnonymou : super test::Class::_internal(value: value) ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class SubClass extends test::_SubClass&Class&Mixin { constructor _internal() → test::SubClass : super test::_SubClass&Class&Mixin::_internal(value: true) diff --git a/pkg/front_end/testcases/general/mixin_from_patch/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/mixin_from_patch/main.dart.weak.outline.expect index ec56334c89e..1bfb45fa268 100644 --- a/pkg/front_end/testcases/general/mixin_from_patch/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/general/mixin_from_patch/main.dart.weak.outline.expect @@ -47,8 +47,8 @@ class SubClass extends self2::_SubClass&Class&Mixin { Extra constant evaluation status: -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:8:20 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:8:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:14:3 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:16:19 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:16:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 5, effectively constant: 4 diff --git a/pkg/front_end/testcases/general/multiple_class_patches/main.dart.strong.expect b/pkg/front_end/testcases/general/multiple_class_patches/main.dart.strong.expect index 6b27aa1a061..01334f2383a 100644 --- a/pkg/front_end/testcases/general/multiple_class_patches/main.dart.strong.expect +++ b/pkg/front_end/testcases/general/multiple_class_patches/main.dart.strong.expect @@ -25,8 +25,8 @@ import "dart:core" as core; import "dart:_internal"; import "dart:_internal"; -@#C1 -@#C1 +@/* from org-dartlang-testcase:///patch_lib1.dart */ #C1 +@/* from org-dartlang-testcase:///patch_lib2.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() @@ -37,7 +37,7 @@ class Class extends core::Object { @#C1 method /* from org-dartlang-testcase:///patch_lib2.dart */ method2() → core::int return 87; - @#C1 + @/* from org-dartlang-testcase:///patch_lib1.dart */ #C1 @#C1 method /* from org-dartlang-testcase:///patch_lib2.dart */ method3() → core::int return 123; diff --git a/pkg/front_end/testcases/general/multiple_class_patches/main.dart.weak.expect b/pkg/front_end/testcases/general/multiple_class_patches/main.dart.weak.expect index 6b27aa1a061..01334f2383a 100644 --- a/pkg/front_end/testcases/general/multiple_class_patches/main.dart.weak.expect +++ b/pkg/front_end/testcases/general/multiple_class_patches/main.dart.weak.expect @@ -25,8 +25,8 @@ import "dart:core" as core; import "dart:_internal"; import "dart:_internal"; -@#C1 -@#C1 +@/* from org-dartlang-testcase:///patch_lib1.dart */ #C1 +@/* from org-dartlang-testcase:///patch_lib2.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() @@ -37,7 +37,7 @@ class Class extends core::Object { @#C1 method /* from org-dartlang-testcase:///patch_lib2.dart */ method2() → core::int return 87; - @#C1 + @/* from org-dartlang-testcase:///patch_lib1.dart */ #C1 @#C1 method /* from org-dartlang-testcase:///patch_lib2.dart */ method3() → core::int return 123; diff --git a/pkg/front_end/testcases/general/multiple_class_patches/main.dart.weak.modular.expect b/pkg/front_end/testcases/general/multiple_class_patches/main.dart.weak.modular.expect index 6b27aa1a061..01334f2383a 100644 --- a/pkg/front_end/testcases/general/multiple_class_patches/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/multiple_class_patches/main.dart.weak.modular.expect @@ -25,8 +25,8 @@ import "dart:core" as core; import "dart:_internal"; import "dart:_internal"; -@#C1 -@#C1 +@/* from org-dartlang-testcase:///patch_lib1.dart */ #C1 +@/* from org-dartlang-testcase:///patch_lib2.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() @@ -37,7 +37,7 @@ class Class extends core::Object { @#C1 method /* from org-dartlang-testcase:///patch_lib2.dart */ method2() → core::int return 87; - @#C1 + @/* from org-dartlang-testcase:///patch_lib1.dart */ #C1 @#C1 method /* from org-dartlang-testcase:///patch_lib2.dart */ method3() → core::int return 123; diff --git a/pkg/front_end/testcases/general/multiple_class_patches/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/multiple_class_patches/main.dart.weak.outline.expect index 57d4e2abe06..8c172eaa271 100644 --- a/pkg/front_end/testcases/general/multiple_class_patches/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/general/multiple_class_patches/main.dart.weak.outline.expect @@ -32,10 +32,10 @@ class Class extends core::Object { Extra constant evaluation status: -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:7:23 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:7:23 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib1.dart:8:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib2.dart:8:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:8:20 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:8:20 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib1.dart:13:3 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 6, effectively constant: 6 diff --git a/pkg/front_end/testcases/general/nested_lib_spec/main.dart.strong.expect b/pkg/front_end/testcases/general/nested_lib_spec/main.dart.strong.expect index 20336b8dfb2..c834e452775 100644 --- a/pkg/front_end/testcases/general/nested_lib_spec/main.dart.strong.expect +++ b/pkg/front_end/testcases/general/nested_lib_spec/main.dart.strong.expect @@ -33,7 +33,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() @@ -47,7 +47,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///extra_patch_lib.dart */ #C1 class Extra extends core::Object { synthetic constructor •() → ext::Extra : super core::Object::•() diff --git a/pkg/front_end/testcases/general/nested_lib_spec/main.dart.weak.expect b/pkg/front_end/testcases/general/nested_lib_spec/main.dart.weak.expect index 20336b8dfb2..c834e452775 100644 --- a/pkg/front_end/testcases/general/nested_lib_spec/main.dart.weak.expect +++ b/pkg/front_end/testcases/general/nested_lib_spec/main.dart.weak.expect @@ -33,7 +33,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() @@ -47,7 +47,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///extra_patch_lib.dart */ #C1 class Extra extends core::Object { synthetic constructor •() → ext::Extra : super core::Object::•() diff --git a/pkg/front_end/testcases/general/nested_lib_spec/main.dart.weak.modular.expect b/pkg/front_end/testcases/general/nested_lib_spec/main.dart.weak.modular.expect index 20336b8dfb2..c834e452775 100644 --- a/pkg/front_end/testcases/general/nested_lib_spec/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/nested_lib_spec/main.dart.weak.modular.expect @@ -33,7 +33,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() @@ -47,7 +47,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///extra_patch_lib.dart */ #C1 class Extra extends core::Object { synthetic constructor •() → ext::Extra : super core::Object::•() diff --git a/pkg/front_end/testcases/general/nested_lib_spec/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/nested_lib_spec/main.dart.weak.outline.expect index d82856a31bb..d70d895e7a7 100644 --- a/pkg/front_end/testcases/general/nested_lib_spec/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/general/nested_lib_spec/main.dart.weak.outline.expect @@ -85,6 +85,6 @@ class Common extends core::Object { Extra constant evaluation status: -Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///extra_lib.dart) -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:8:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///extra_patch_lib.dart:8:1 -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 2, effectively constant: 2 diff --git a/pkg/front_end/testcases/general/patch_annotations/libraries.json b/pkg/front_end/testcases/general/patch_annotations/libraries.json new file mode 100644 index 00000000000..6b6fc26d5d1 --- /dev/null +++ b/pkg/front_end/testcases/general/patch_annotations/libraries.json @@ -0,0 +1,13 @@ +{ + "none": { + "comment:0": "This adds to the default libraries found in the platform.", + "libraries": { + "test": { + "patches": [ + "patch_lib.dart" + ], + "uri": "origin_lib.dart" + } + } + } +} diff --git a/pkg/front_end/testcases/general/patch_annotations/main.dart b/pkg/front_end/testcases/general/patch_annotations/main.dart new file mode 100644 index 00000000000..c0f0df1ba6f --- /dev/null +++ b/pkg/front_end/testcases/general/patch_annotations/main.dart @@ -0,0 +1,7 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:test'; + +main() {} diff --git a/pkg/front_end/testcases/general/patch_annotations/main.dart.strong.expect b/pkg/front_end/testcases/general/patch_annotations/main.dart.strong.expect new file mode 100644 index 00000000000..41ec652fdc4 --- /dev/null +++ b/pkg/front_end/testcases/general/patch_annotations/main.dart.strong.expect @@ -0,0 +1,62 @@ +library; +import self as self; + +import "dart:test"; + +static method main() → dynamic {} + +@/* from org-dartlang-testcase:///patch_lib.dart */ #C3 +@#C5 +library; +import self as self2; +import "dart:core" as core; +import "dart:_internal" as _in; + +import "dart:_internal"; + +@/* from org-dartlang-testcase:///patch_lib.dart */ #C6 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C8 +@#C10 +class Class<@#C12 @#C14 T extends core::Object? = dynamic> extends core::Object { + @#C6 + @#C16 + @/* from org-dartlang-testcase:///origin_lib.dart */ #C18 + external constructor •() → self2::Class; + @#C6 + @#C20 + @/* from org-dartlang-testcase:///origin_lib.dart */ #C22 + external method /* from org-dartlang-testcase:///patch_lib.dart */ method<@#C24 S extends core::Object? = dynamic>() → void; +} + +constants { + #C1 = "patch-library" + #C2 = null + #C3 = core::pragma {name:#C1, options:#C2} + #C4 = "origin-library" + #C5 = core::pragma {name:#C4, options:#C2} + #C6 = _in::_Patch {} + #C7 = "patch-class" + #C8 = core::pragma {name:#C7, options:#C2} + #C9 = "origin-class" + #C10 = core::pragma {name:#C9, options:#C2} + #C11 = "patch-class-type-variable" + #C12 = core::pragma {name:#C11, options:#C2} + #C13 = "origin-class-type-variable" + #C14 = core::pragma {name:#C13, options:#C2} + #C15 = "patch-constructor" + #C16 = core::pragma {name:#C15, options:#C2} + #C17 = "origin-constructor" + #C18 = core::pragma {name:#C17, options:#C2} + #C19 = "patch-procedure" + #C20 = core::pragma {name:#C19, options:#C2} + #C21 = "origin-procedure" + #C22 = core::pragma {name:#C21, options:#C2} + #C23 = "patch-method-type-variable" + #C24 = core::pragma {name:#C23, options:#C2} +} + + +Constructor coverage from constants: +org-dartlang-testcase:///origin_lib.dart: +- pragma._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart) +- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart) diff --git a/pkg/front_end/testcases/general/patch_annotations/main.dart.strong.transformed.expect b/pkg/front_end/testcases/general/patch_annotations/main.dart.strong.transformed.expect new file mode 100644 index 00000000000..6f2b2a4643f --- /dev/null +++ b/pkg/front_end/testcases/general/patch_annotations/main.dart.strong.transformed.expect @@ -0,0 +1,62 @@ +library; +import self as self; + +import "dart:test"; + +static method main() → dynamic {} + +@#C3 +@#C5 +library; +import self as self2; +import "dart:core" as core; +import "dart:_internal" as _in; + +import "dart:_internal"; + +@#C6 +@#C8 +@#C10 +class Class<@#C12 @#C14 T extends core::Object? = dynamic> extends core::Object { + @#C6 + @#C16 + @#C18 + external constructor •() → self2::Class; + @#C6 + @#C20 + @#C22 + external method /* from org-dartlang-testcase:///patch_lib.dart */ method<@#C24 S extends core::Object? = dynamic>() → void; +} + +constants { + #C1 = "patch-library" + #C2 = null + #C3 = core::pragma {name:#C1, options:#C2} + #C4 = "origin-library" + #C5 = core::pragma {name:#C4, options:#C2} + #C6 = _in::_Patch {} + #C7 = "patch-class" + #C8 = core::pragma {name:#C7, options:#C2} + #C9 = "origin-class" + #C10 = core::pragma {name:#C9, options:#C2} + #C11 = "patch-class-type-variable" + #C12 = core::pragma {name:#C11, options:#C2} + #C13 = "origin-class-type-variable" + #C14 = core::pragma {name:#C13, options:#C2} + #C15 = "patch-constructor" + #C16 = core::pragma {name:#C15, options:#C2} + #C17 = "origin-constructor" + #C18 = core::pragma {name:#C17, options:#C2} + #C19 = "patch-procedure" + #C20 = core::pragma {name:#C19, options:#C2} + #C21 = "origin-procedure" + #C22 = core::pragma {name:#C21, options:#C2} + #C23 = "patch-method-type-variable" + #C24 = core::pragma {name:#C23, options:#C2} +} + + +Constructor coverage from constants: +org-dartlang-testcase:///origin_lib.dart: +- pragma._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart) +- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart) diff --git a/pkg/front_end/testcases/general/patch_annotations/main.dart.textual_outline.expect b/pkg/front_end/testcases/general/patch_annotations/main.dart.textual_outline.expect new file mode 100644 index 00000000000..3c9c90e9437 --- /dev/null +++ b/pkg/front_end/testcases/general/patch_annotations/main.dart.textual_outline.expect @@ -0,0 +1,3 @@ +import 'dart:test'; + +main() {} diff --git a/pkg/front_end/testcases/general/patch_annotations/main.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/patch_annotations/main.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..3c9c90e9437 --- /dev/null +++ b/pkg/front_end/testcases/general/patch_annotations/main.dart.textual_outline_modelled.expect @@ -0,0 +1,3 @@ +import 'dart:test'; + +main() {} diff --git a/pkg/front_end/testcases/general/patch_annotations/main.dart.weak.expect b/pkg/front_end/testcases/general/patch_annotations/main.dart.weak.expect new file mode 100644 index 00000000000..41ec652fdc4 --- /dev/null +++ b/pkg/front_end/testcases/general/patch_annotations/main.dart.weak.expect @@ -0,0 +1,62 @@ +library; +import self as self; + +import "dart:test"; + +static method main() → dynamic {} + +@/* from org-dartlang-testcase:///patch_lib.dart */ #C3 +@#C5 +library; +import self as self2; +import "dart:core" as core; +import "dart:_internal" as _in; + +import "dart:_internal"; + +@/* from org-dartlang-testcase:///patch_lib.dart */ #C6 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C8 +@#C10 +class Class<@#C12 @#C14 T extends core::Object? = dynamic> extends core::Object { + @#C6 + @#C16 + @/* from org-dartlang-testcase:///origin_lib.dart */ #C18 + external constructor •() → self2::Class; + @#C6 + @#C20 + @/* from org-dartlang-testcase:///origin_lib.dart */ #C22 + external method /* from org-dartlang-testcase:///patch_lib.dart */ method<@#C24 S extends core::Object? = dynamic>() → void; +} + +constants { + #C1 = "patch-library" + #C2 = null + #C3 = core::pragma {name:#C1, options:#C2} + #C4 = "origin-library" + #C5 = core::pragma {name:#C4, options:#C2} + #C6 = _in::_Patch {} + #C7 = "patch-class" + #C8 = core::pragma {name:#C7, options:#C2} + #C9 = "origin-class" + #C10 = core::pragma {name:#C9, options:#C2} + #C11 = "patch-class-type-variable" + #C12 = core::pragma {name:#C11, options:#C2} + #C13 = "origin-class-type-variable" + #C14 = core::pragma {name:#C13, options:#C2} + #C15 = "patch-constructor" + #C16 = core::pragma {name:#C15, options:#C2} + #C17 = "origin-constructor" + #C18 = core::pragma {name:#C17, options:#C2} + #C19 = "patch-procedure" + #C20 = core::pragma {name:#C19, options:#C2} + #C21 = "origin-procedure" + #C22 = core::pragma {name:#C21, options:#C2} + #C23 = "patch-method-type-variable" + #C24 = core::pragma {name:#C23, options:#C2} +} + + +Constructor coverage from constants: +org-dartlang-testcase:///origin_lib.dart: +- pragma._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart) +- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart) diff --git a/pkg/front_end/testcases/general/patch_annotations/main.dart.weak.modular.expect b/pkg/front_end/testcases/general/patch_annotations/main.dart.weak.modular.expect new file mode 100644 index 00000000000..41ec652fdc4 --- /dev/null +++ b/pkg/front_end/testcases/general/patch_annotations/main.dart.weak.modular.expect @@ -0,0 +1,62 @@ +library; +import self as self; + +import "dart:test"; + +static method main() → dynamic {} + +@/* from org-dartlang-testcase:///patch_lib.dart */ #C3 +@#C5 +library; +import self as self2; +import "dart:core" as core; +import "dart:_internal" as _in; + +import "dart:_internal"; + +@/* from org-dartlang-testcase:///patch_lib.dart */ #C6 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C8 +@#C10 +class Class<@#C12 @#C14 T extends core::Object? = dynamic> extends core::Object { + @#C6 + @#C16 + @/* from org-dartlang-testcase:///origin_lib.dart */ #C18 + external constructor •() → self2::Class; + @#C6 + @#C20 + @/* from org-dartlang-testcase:///origin_lib.dart */ #C22 + external method /* from org-dartlang-testcase:///patch_lib.dart */ method<@#C24 S extends core::Object? = dynamic>() → void; +} + +constants { + #C1 = "patch-library" + #C2 = null + #C3 = core::pragma {name:#C1, options:#C2} + #C4 = "origin-library" + #C5 = core::pragma {name:#C4, options:#C2} + #C6 = _in::_Patch {} + #C7 = "patch-class" + #C8 = core::pragma {name:#C7, options:#C2} + #C9 = "origin-class" + #C10 = core::pragma {name:#C9, options:#C2} + #C11 = "patch-class-type-variable" + #C12 = core::pragma {name:#C11, options:#C2} + #C13 = "origin-class-type-variable" + #C14 = core::pragma {name:#C13, options:#C2} + #C15 = "patch-constructor" + #C16 = core::pragma {name:#C15, options:#C2} + #C17 = "origin-constructor" + #C18 = core::pragma {name:#C17, options:#C2} + #C19 = "patch-procedure" + #C20 = core::pragma {name:#C19, options:#C2} + #C21 = "origin-procedure" + #C22 = core::pragma {name:#C21, options:#C2} + #C23 = "patch-method-type-variable" + #C24 = core::pragma {name:#C23, options:#C2} +} + + +Constructor coverage from constants: +org-dartlang-testcase:///origin_lib.dart: +- pragma._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart) +- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart) diff --git a/pkg/front_end/testcases/general/patch_annotations/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/patch_annotations/main.dart.weak.outline.expect new file mode 100644 index 00000000000..72884c4fbc3 --- /dev/null +++ b/pkg/front_end/testcases/general/patch_annotations/main.dart.weak.outline.expect @@ -0,0 +1,48 @@ +library; +import self as self; + +import "dart:test"; + +static method main() → dynamic + ; + +@const dart.core::pragma::_("patch-library") +@dart.core::pragma::_("origin-library") +library; +import self as self2; +import "dart:core" as core; +import "dart:_internal" as _in; + +import "dart:_internal"; + +@_in::patch +@const core::pragma::_("patch-class") +@core::pragma::_("origin-class") +class Class<@core::pragma::_("patch-class-type-variable") @core::pragma::_("origin-class-type-variable") T extends core::Object? = dynamic> extends core::Object { + @_in::patch + @core::pragma::_("patch-constructor") + @const core::pragma::_("origin-constructor") + external constructor •() → self2::Class; + @_in::patch + @core::pragma::_("patch-procedure") + @const core::pragma::_("origin-procedure") + external method method<@core::pragma::_("origin-method-type-variable") S extends core::Object? = dynamic>() → void; +} + + +Extra constant evaluation status: +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:5:1 -> InstanceConstant(const pragma{pragma.name: "patch-library", pragma.options: null}) +Evaluated: ConstructorInvocation @ org-dartlang-testcase:///origin_lib.dart:5:2 -> InstanceConstant(const pragma{pragma.name: "origin-library", pragma.options: null}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:11:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:12:1 -> InstanceConstant(const pragma{pragma.name: "patch-class", pragma.options: null}) +Evaluated: ConstructorInvocation @ org-dartlang-testcase:///origin_lib.dart:8:2 -> InstanceConstant(const pragma{pragma.name: "origin-class", pragma.options: null}) +Evaluated: ConstructorInvocation @ org-dartlang-testcase:///origin_lib.dart:10:25 -> InstanceConstant(const pragma{pragma.name: "patch-class-type-variable", pragma.options: null}) +Evaluated: ConstructorInvocation @ org-dartlang-testcase:///origin_lib.dart:9:14 -> InstanceConstant(const pragma{pragma.name: "origin-class-type-variable", pragma.options: null}) +Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:13:16 -> InstanceConstant(const _Patch{}) +Evaluated: ConstructorInvocation @ org-dartlang-testcase:///origin_lib.dart:13:25 -> InstanceConstant(const pragma{pragma.name: "patch-constructor", pragma.options: null}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///origin_lib.dart:10:3 -> InstanceConstant(const pragma{pragma.name: "origin-constructor", pragma.options: null}) +Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:14:47 -> InstanceConstant(const _Patch{}) +Evaluated: ConstructorInvocation @ org-dartlang-testcase:///origin_lib.dart:14:56 -> InstanceConstant(const pragma{pragma.name: "patch-procedure", pragma.options: null}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///origin_lib.dart:13:3 -> InstanceConstant(const pragma{pragma.name: "origin-procedure", pragma.options: null}) +Evaluated: ConstructorInvocation @ org-dartlang-testcase:///origin_lib.dart:14:25 -> InstanceConstant(const pragma{pragma.name: "origin-method-type-variable", pragma.options: null}) +Extra constant evaluation: evaluated: 14, effectively constant: 14 diff --git a/pkg/front_end/testcases/general/patch_annotations/main.dart.weak.transformed.expect b/pkg/front_end/testcases/general/patch_annotations/main.dart.weak.transformed.expect new file mode 100644 index 00000000000..6f2b2a4643f --- /dev/null +++ b/pkg/front_end/testcases/general/patch_annotations/main.dart.weak.transformed.expect @@ -0,0 +1,62 @@ +library; +import self as self; + +import "dart:test"; + +static method main() → dynamic {} + +@#C3 +@#C5 +library; +import self as self2; +import "dart:core" as core; +import "dart:_internal" as _in; + +import "dart:_internal"; + +@#C6 +@#C8 +@#C10 +class Class<@#C12 @#C14 T extends core::Object? = dynamic> extends core::Object { + @#C6 + @#C16 + @#C18 + external constructor •() → self2::Class; + @#C6 + @#C20 + @#C22 + external method /* from org-dartlang-testcase:///patch_lib.dart */ method<@#C24 S extends core::Object? = dynamic>() → void; +} + +constants { + #C1 = "patch-library" + #C2 = null + #C3 = core::pragma {name:#C1, options:#C2} + #C4 = "origin-library" + #C5 = core::pragma {name:#C4, options:#C2} + #C6 = _in::_Patch {} + #C7 = "patch-class" + #C8 = core::pragma {name:#C7, options:#C2} + #C9 = "origin-class" + #C10 = core::pragma {name:#C9, options:#C2} + #C11 = "patch-class-type-variable" + #C12 = core::pragma {name:#C11, options:#C2} + #C13 = "origin-class-type-variable" + #C14 = core::pragma {name:#C13, options:#C2} + #C15 = "patch-constructor" + #C16 = core::pragma {name:#C15, options:#C2} + #C17 = "origin-constructor" + #C18 = core::pragma {name:#C17, options:#C2} + #C19 = "patch-procedure" + #C20 = core::pragma {name:#C19, options:#C2} + #C21 = "origin-procedure" + #C22 = core::pragma {name:#C21, options:#C2} + #C23 = "patch-method-type-variable" + #C24 = core::pragma {name:#C23, options:#C2} +} + + +Constructor coverage from constants: +org-dartlang-testcase:///origin_lib.dart: +- pragma._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart) +- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart) diff --git a/pkg/front_end/testcases/general/patch_annotations/origin_lib.dart b/pkg/front_end/testcases/general/patch_annotations/origin_lib.dart new file mode 100644 index 00000000000..810a3949fd7 --- /dev/null +++ b/pkg/front_end/testcases/general/patch_annotations/origin_lib.dart @@ -0,0 +1,15 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +@pragma('origin-library') +library; + +@pragma('origin-class') +class Class<@pragma('origin-class-type-variable') T> { + @pragma('origin-constructor') + external Class(); + + @pragma('origin-procedure') + external void method<@pragma('origin-method-type-variable') S>(); +} diff --git a/pkg/front_end/testcases/general/patch_annotations/patch_lib.dart b/pkg/front_end/testcases/general/patch_annotations/patch_lib.dart new file mode 100644 index 00000000000..717ed232d4f --- /dev/null +++ b/pkg/front_end/testcases/general/patch_annotations/patch_lib.dart @@ -0,0 +1,21 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +@pragma('patch-library') +library; + +// ignore: import_internal_library +import 'dart:_internal'; + +@patch +@pragma('patch-class') +class Class<@pragma('patch-class-type-variable') T> { + @patch + @pragma('patch-constructor') + external Class(); + + @patch + @pragma('patch-procedure') + external void method<@pragma('patch-method-type-variable') S>(); +} diff --git a/pkg/front_end/testcases/general/patch_conflict/main.dart.strong.expect b/pkg/front_end/testcases/general/patch_conflict/main.dart.strong.expect index fd33f3f24a8..93c0fff24d6 100644 --- a/pkg/front_end/testcases/general/patch_conflict/main.dart.strong.expect +++ b/pkg/front_end/testcases/general/patch_conflict/main.dart.strong.expect @@ -96,7 +96,7 @@ class ExistingOriginClass#0#1 extends core::Object { // from org-dartlang-testca : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { @#C1 constructor missingOriginConstructor() → self2::Class diff --git a/pkg/front_end/testcases/general/patch_conflict/main.dart.weak.expect b/pkg/front_end/testcases/general/patch_conflict/main.dart.weak.expect index fd33f3f24a8..93c0fff24d6 100644 --- a/pkg/front_end/testcases/general/patch_conflict/main.dart.weak.expect +++ b/pkg/front_end/testcases/general/patch_conflict/main.dart.weak.expect @@ -96,7 +96,7 @@ class ExistingOriginClass#0#1 extends core::Object { // from org-dartlang-testca : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { @#C1 constructor missingOriginConstructor() → self2::Class diff --git a/pkg/front_end/testcases/general/patch_conflict/main.dart.weak.modular.expect b/pkg/front_end/testcases/general/patch_conflict/main.dart.weak.modular.expect index fd33f3f24a8..93c0fff24d6 100644 --- a/pkg/front_end/testcases/general/patch_conflict/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/patch_conflict/main.dart.weak.modular.expect @@ -96,7 +96,7 @@ class ExistingOriginClass#0#1 extends core::Object { // from org-dartlang-testca : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { @#C1 constructor missingOriginConstructor() → self2::Class diff --git a/pkg/front_end/testcases/general/patch_conflict/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/patch_conflict/main.dart.weak.outline.expect index c7784d62145..60af48842af 100644 --- a/pkg/front_end/testcases/general/patch_conflict/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/general/patch_conflict/main.dart.weak.outline.expect @@ -129,7 +129,7 @@ static method /* from org-dartlang-testcase:///patch_lib.dart */ existingOriginM Extra constant evaluation status: Evaluated: StaticGet @ org-dartlang-testcase:///patch_lib.dart:24:2 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:8:37 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:8:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///patch_lib.dart:10:4 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///patch_lib.dart:15:4 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///patch_lib.dart:27:2 -> InstanceConstant(const _Patch{}) diff --git a/pkg/front_end/testcases/general/patch_extends_implements/main.dart.strong.expect b/pkg/front_end/testcases/general/patch_extends_implements/main.dart.strong.expect index 336108350dc..4031b347bd4 100644 --- a/pkg/front_end/testcases/general/patch_extends_implements/main.dart.strong.expect +++ b/pkg/front_end/testcases/general/patch_extends_implements/main.dart.strong.expect @@ -118,37 +118,37 @@ class SuperClass extends core::Object { : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 abstract class Class1a extends core::Object { synthetic constructor •() → test::Class1a : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class1b extends core::Object { synthetic constructor •() → test::Class1b : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class2a extends test::SuperClass { synthetic constructor •() → test::Class2a : super test::SuperClass::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class2b extends core::Object { synthetic constructor •() → test::Class2b : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class3a extends core::Object implements test::Interface { synthetic constructor •() → test::Class3a : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class3b extends core::Object { synthetic constructor •() → test::Class3b : super core::Object::•() @@ -159,31 +159,31 @@ abstract class _Class4a&Object&Mixin = core::Object with test::Mixin /*isAnonymo : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class4a extends test::_Class4a&Object&Mixin { synthetic constructor •() → test::Class4a : super test::_Class4a&Object&Mixin::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class4b extends core::Object { synthetic constructor •() → test::Class4b : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5a extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •() → test::Class5a /* redirection-target: test::Class5aImpl::• */ return new test::Class5aImpl::•(); } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5aImpl extends core::Object implements test::Class5a { synthetic constructor •() → test::Class5aImpl : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5b extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •() → test::Class5b /* redirection-target: test::Class5bImpl::• */ @@ -193,13 +193,13 @@ class Class5b extends core::Object { factory Class5b() = Class5bImpl; ^"; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5bImpl extends core::Object { synthetic constructor •() → test::Class5bImpl : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5c extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •() → test::Class5c /* redirection-target: test::Class5cImpl::• */ @@ -209,13 +209,13 @@ class Class5c extends core::Object { factory Class5c() = Class5cImpl; ^"; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5cImpl extends core::Object { synthetic constructor •() → test::Class5cImpl : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class6a extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •((test::Class6a::•::T%) → void f) → test::Class6a /* redirection-target: test::_Class6aImpl::•*/ @@ -225,13 +225,13 @@ class Class6a extends core::Object { factory Class6a(void Function(T) f) = _Class6aImpl; ^"; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class6b extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •((test::Class6b::•::T%) → void f) → test::Class6b /* redirection-target: test::_Class6bImpl::•*/ return new test::_Class6bImpl::•(f); } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class6c extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •((test::Class6c::•::T%) → void f) → test::Class6c /* redirection-target: test::_Class6cImpl::•*/ diff --git a/pkg/front_end/testcases/general/patch_extends_implements/main.dart.weak.expect b/pkg/front_end/testcases/general/patch_extends_implements/main.dart.weak.expect index 336108350dc..4031b347bd4 100644 --- a/pkg/front_end/testcases/general/patch_extends_implements/main.dart.weak.expect +++ b/pkg/front_end/testcases/general/patch_extends_implements/main.dart.weak.expect @@ -118,37 +118,37 @@ class SuperClass extends core::Object { : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 abstract class Class1a extends core::Object { synthetic constructor •() → test::Class1a : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class1b extends core::Object { synthetic constructor •() → test::Class1b : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class2a extends test::SuperClass { synthetic constructor •() → test::Class2a : super test::SuperClass::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class2b extends core::Object { synthetic constructor •() → test::Class2b : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class3a extends core::Object implements test::Interface { synthetic constructor •() → test::Class3a : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class3b extends core::Object { synthetic constructor •() → test::Class3b : super core::Object::•() @@ -159,31 +159,31 @@ abstract class _Class4a&Object&Mixin = core::Object with test::Mixin /*isAnonymo : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class4a extends test::_Class4a&Object&Mixin { synthetic constructor •() → test::Class4a : super test::_Class4a&Object&Mixin::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class4b extends core::Object { synthetic constructor •() → test::Class4b : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5a extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •() → test::Class5a /* redirection-target: test::Class5aImpl::• */ return new test::Class5aImpl::•(); } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5aImpl extends core::Object implements test::Class5a { synthetic constructor •() → test::Class5aImpl : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5b extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •() → test::Class5b /* redirection-target: test::Class5bImpl::• */ @@ -193,13 +193,13 @@ class Class5b extends core::Object { factory Class5b() = Class5bImpl; ^"; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5bImpl extends core::Object { synthetic constructor •() → test::Class5bImpl : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5c extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •() → test::Class5c /* redirection-target: test::Class5cImpl::• */ @@ -209,13 +209,13 @@ class Class5c extends core::Object { factory Class5c() = Class5cImpl; ^"; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5cImpl extends core::Object { synthetic constructor •() → test::Class5cImpl : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class6a extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •((test::Class6a::•::T%) → void f) → test::Class6a /* redirection-target: test::_Class6aImpl::•*/ @@ -225,13 +225,13 @@ class Class6a extends core::Object { factory Class6a(void Function(T) f) = _Class6aImpl; ^"; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class6b extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •((test::Class6b::•::T%) → void f) → test::Class6b /* redirection-target: test::_Class6bImpl::•*/ return new test::_Class6bImpl::•(f); } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class6c extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •((test::Class6c::•::T%) → void f) → test::Class6c /* redirection-target: test::_Class6cImpl::•*/ diff --git a/pkg/front_end/testcases/general/patch_extends_implements/main.dart.weak.modular.expect b/pkg/front_end/testcases/general/patch_extends_implements/main.dart.weak.modular.expect index 336108350dc..4031b347bd4 100644 --- a/pkg/front_end/testcases/general/patch_extends_implements/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/patch_extends_implements/main.dart.weak.modular.expect @@ -118,37 +118,37 @@ class SuperClass extends core::Object { : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 abstract class Class1a extends core::Object { synthetic constructor •() → test::Class1a : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class1b extends core::Object { synthetic constructor •() → test::Class1b : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class2a extends test::SuperClass { synthetic constructor •() → test::Class2a : super test::SuperClass::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class2b extends core::Object { synthetic constructor •() → test::Class2b : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class3a extends core::Object implements test::Interface { synthetic constructor •() → test::Class3a : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class3b extends core::Object { synthetic constructor •() → test::Class3b : super core::Object::•() @@ -159,31 +159,31 @@ abstract class _Class4a&Object&Mixin = core::Object with test::Mixin /*isAnonymo : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class4a extends test::_Class4a&Object&Mixin { synthetic constructor •() → test::Class4a : super test::_Class4a&Object&Mixin::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class4b extends core::Object { synthetic constructor •() → test::Class4b : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5a extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •() → test::Class5a /* redirection-target: test::Class5aImpl::• */ return new test::Class5aImpl::•(); } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5aImpl extends core::Object implements test::Class5a { synthetic constructor •() → test::Class5aImpl : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5b extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •() → test::Class5b /* redirection-target: test::Class5bImpl::• */ @@ -193,13 +193,13 @@ class Class5b extends core::Object { factory Class5b() = Class5bImpl; ^"; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5bImpl extends core::Object { synthetic constructor •() → test::Class5bImpl : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5c extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •() → test::Class5c /* redirection-target: test::Class5cImpl::• */ @@ -209,13 +209,13 @@ class Class5c extends core::Object { factory Class5c() = Class5cImpl; ^"; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class5cImpl extends core::Object { synthetic constructor •() → test::Class5cImpl : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class6a extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •((test::Class6a::•::T%) → void f) → test::Class6a /* redirection-target: test::_Class6aImpl::•*/ @@ -225,13 +225,13 @@ class Class6a extends core::Object { factory Class6a(void Function(T) f) = _Class6aImpl; ^"; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class6b extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •((test::Class6b::•::T%) → void f) → test::Class6b /* redirection-target: test::_Class6bImpl::•*/ return new test::_Class6bImpl::•(f); } -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class6c extends core::Object { @#C1 static factory /* from org-dartlang-testcase:///patch_lib.dart */ •((test::Class6c::•::T%) → void f) → test::Class6c /* redirection-target: test::_Class6cImpl::•*/ diff --git a/pkg/front_end/testcases/general/patch_extends_implements/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/patch_extends_implements/main.dart.weak.outline.expect index 0362a98c09d..539032fd77f 100644 --- a/pkg/front_end/testcases/general/patch_extends_implements/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/general/patch_extends_implements/main.dart.weak.outline.expect @@ -166,27 +166,27 @@ class Class6c extends core::Object { Extra constant evaluation status: -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:9:18 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:11:22 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:15:11 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:15:36 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:19:25 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:21:11 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:25:10 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:28:1 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:31:4 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:8:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:11:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:14:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:17:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:20:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:23:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:26:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:29:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:32:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:31:29 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:34:17 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:37:13 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:38:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:41:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:39:16 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:43:12 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:46:19 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:47:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:50:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:46:44 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:50:19 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:50:48 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:56:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:59:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:54:6 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:69:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:79:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 32, effectively constant: 23 diff --git a/pkg/front_end/testcases/general/patch_extension_scope/main.dart.strong.expect b/pkg/front_end/testcases/general/patch_extension_scope/main.dart.strong.expect index 0112b2d54b8..e92798225a3 100644 --- a/pkg/front_end/testcases/general/patch_extension_scope/main.dart.strong.expect +++ b/pkg/front_end/testcases/general/patch_extension_scope/main.dart.strong.expect @@ -138,8 +138,8 @@ import "dart:core" as core; import "dart:_internal"; import "dart:_internal"; -@#C1 -@#C1 +@/* from org-dartlang-testcase:///patch_lib1.dart */ #C1 +@/* from org-dartlang-testcase:///patch_lib2.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() diff --git a/pkg/front_end/testcases/general/patch_extension_scope/main.dart.weak.expect b/pkg/front_end/testcases/general/patch_extension_scope/main.dart.weak.expect index 0112b2d54b8..e92798225a3 100644 --- a/pkg/front_end/testcases/general/patch_extension_scope/main.dart.weak.expect +++ b/pkg/front_end/testcases/general/patch_extension_scope/main.dart.weak.expect @@ -138,8 +138,8 @@ import "dart:core" as core; import "dart:_internal"; import "dart:_internal"; -@#C1 -@#C1 +@/* from org-dartlang-testcase:///patch_lib1.dart */ #C1 +@/* from org-dartlang-testcase:///patch_lib2.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() diff --git a/pkg/front_end/testcases/general/patch_extension_scope/main.dart.weak.modular.expect b/pkg/front_end/testcases/general/patch_extension_scope/main.dart.weak.modular.expect index 0112b2d54b8..e92798225a3 100644 --- a/pkg/front_end/testcases/general/patch_extension_scope/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/patch_extension_scope/main.dart.weak.modular.expect @@ -138,8 +138,8 @@ import "dart:core" as core; import "dart:_internal"; import "dart:_internal"; -@#C1 -@#C1 +@/* from org-dartlang-testcase:///patch_lib1.dart */ #C1 +@/* from org-dartlang-testcase:///patch_lib2.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() diff --git a/pkg/front_end/testcases/general/patch_extension_scope/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/patch_extension_scope/main.dart.weak.outline.expect index 563f88ef766..9df2ebba696 100644 --- a/pkg/front_end/testcases/general/patch_extension_scope/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/general/patch_extension_scope/main.dart.weak.outline.expect @@ -137,6 +137,6 @@ static extension-member method /* from org-dartlang-testcase:///patch_lib2.dart Extra constant evaluation status: -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:7:30 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:7:30 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib1.dart:8:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib2.dart:8:1 -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 38, effectively constant: 2 diff --git a/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.strong.expect b/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.strong.expect index 281cd629e3c..1e8bed44f01 100644 --- a/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.strong.expect +++ b/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.strong.expect @@ -58,7 +58,7 @@ export "org-dartlang-malformed-uri:?%3Ad"; import "org-dartlang-malformed-uri:?%3Aa"; export "org-dartlang-malformed-uri:?%3Ab"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() diff --git a/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.weak.expect b/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.weak.expect index 281cd629e3c..1e8bed44f01 100644 --- a/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.weak.expect +++ b/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.weak.expect @@ -58,7 +58,7 @@ export "org-dartlang-malformed-uri:?%3Ad"; import "org-dartlang-malformed-uri:?%3Aa"; export "org-dartlang-malformed-uri:?%3Ab"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() diff --git a/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.weak.modular.expect b/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.weak.modular.expect index 281cd629e3c..1e8bed44f01 100644 --- a/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.weak.modular.expect @@ -58,7 +58,7 @@ export "org-dartlang-malformed-uri:?%3Ad"; import "org-dartlang-malformed-uri:?%3Aa"; export "org-dartlang-malformed-uri:?%3Ab"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() diff --git a/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.weak.outline.expect index c348e237719..4346febc6cd 100644 --- a/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.weak.outline.expect @@ -80,5 +80,5 @@ import self as self6; Extra constant evaluation status: -Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:11:1 -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 1, effectively constant: 1 diff --git a/pkg/front_end/testcases/general/tear_off_patch/main.dart.strong.expect b/pkg/front_end/testcases/general/tear_off_patch/main.dart.strong.expect index 3087029d61f..e33d3edf0e8 100644 --- a/pkg/front_end/testcases/general/tear_off_patch/main.dart.strong.expect +++ b/pkg/front_end/testcases/general/tear_off_patch/main.dart.strong.expect @@ -29,7 +29,7 @@ import "dart:_internal"; typedef Alias = test::Class; typedef AliasImpl = test::ClassImpl; -@#C13 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C13 class Class extends core::Object { @#C13 constructor •({core::bool defaultValue = #C14, required test::Class::T% value = #C15}) → test::Class @@ -46,7 +46,7 @@ class Class extends core::Object { static factory /* from org-dartlang-testcase:///patch_lib.dart */ redirect2({core::bool defaultValue = #C15, required test::Class::redirect2::T% value = #C15}) → test::Class /* redirection-target: test::ClassImpl::patched*/ return new test::ClassImpl::patched(defaultValue: defaultValue, value: value); } -@#C13 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C13 class ClassImpl extends core::Object implements test::Class { constructor •({core::bool defaultValue = #C14, required test::ClassImpl::T% value = #C15}) → test::ClassImpl : super core::Object::•() diff --git a/pkg/front_end/testcases/general/tear_off_patch/main.dart.weak.expect b/pkg/front_end/testcases/general/tear_off_patch/main.dart.weak.expect index 3087029d61f..e33d3edf0e8 100644 --- a/pkg/front_end/testcases/general/tear_off_patch/main.dart.weak.expect +++ b/pkg/front_end/testcases/general/tear_off_patch/main.dart.weak.expect @@ -29,7 +29,7 @@ import "dart:_internal"; typedef Alias = test::Class; typedef AliasImpl = test::ClassImpl; -@#C13 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C13 class Class extends core::Object { @#C13 constructor •({core::bool defaultValue = #C14, required test::Class::T% value = #C15}) → test::Class @@ -46,7 +46,7 @@ class Class extends core::Object { static factory /* from org-dartlang-testcase:///patch_lib.dart */ redirect2({core::bool defaultValue = #C15, required test::Class::redirect2::T% value = #C15}) → test::Class /* redirection-target: test::ClassImpl::patched*/ return new test::ClassImpl::patched(defaultValue: defaultValue, value: value); } -@#C13 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C13 class ClassImpl extends core::Object implements test::Class { constructor •({core::bool defaultValue = #C14, required test::ClassImpl::T% value = #C15}) → test::ClassImpl : super core::Object::•() diff --git a/pkg/front_end/testcases/general/tear_off_patch/main.dart.weak.modular.expect b/pkg/front_end/testcases/general/tear_off_patch/main.dart.weak.modular.expect index 3087029d61f..e33d3edf0e8 100644 --- a/pkg/front_end/testcases/general/tear_off_patch/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/tear_off_patch/main.dart.weak.modular.expect @@ -29,7 +29,7 @@ import "dart:_internal"; typedef Alias = test::Class; typedef AliasImpl = test::ClassImpl; -@#C13 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C13 class Class extends core::Object { @#C13 constructor •({core::bool defaultValue = #C14, required test::Class::T% value = #C15}) → test::Class @@ -46,7 +46,7 @@ class Class extends core::Object { static factory /* from org-dartlang-testcase:///patch_lib.dart */ redirect2({core::bool defaultValue = #C15, required test::Class::redirect2::T% value = #C15}) → test::Class /* redirection-target: test::ClassImpl::patched*/ return new test::ClassImpl::patched(defaultValue: defaultValue, value: value); } -@#C13 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C13 class ClassImpl extends core::Object implements test::Class { constructor •({core::bool defaultValue = #C14, required test::ClassImpl::T% value = #C15}) → test::ClassImpl : super core::Object::•() diff --git a/pkg/front_end/testcases/general/tear_off_patch/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/tear_off_patch/main.dart.weak.outline.expect index 93081dbbe54..82211a22793 100644 --- a/pkg/front_end/testcases/general/tear_off_patch/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/general/tear_off_patch/main.dart.weak.outline.expect @@ -50,11 +50,11 @@ static method _#AliasImpl#patched#tearOff({has-declared-ini Extra constant evaluation status: -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:6:46 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:8:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:7:8 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:8:27 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:12:21 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:15:10 -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:18:36 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:27:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:19:45 -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 31, effectively constant: 7 diff --git a/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.strong.expect b/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.strong.expect index 0379b37d26c..e9468626199 100644 --- a/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.strong.expect +++ b/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.strong.expect @@ -12,7 +12,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { field core::int? _#Class#foo = null /* from org-dartlang-testcase:///patch_lib.dart */; constructor bar() → self2::Class diff --git a/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.weak.expect b/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.weak.expect index c5e89e49d16..dc190a3b804 100644 --- a/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.weak.expect +++ b/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.weak.expect @@ -12,7 +12,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { field core::int? _#Class#foo = null /* from org-dartlang-testcase:///patch_lib.dart */; field core::bool _#Class#foo#isSet = false /* from org-dartlang-testcase:///patch_lib.dart */; diff --git a/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.weak.modular.expect b/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.weak.modular.expect index c5e89e49d16..dc190a3b804 100644 --- a/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.weak.modular.expect @@ -12,7 +12,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { field core::int? _#Class#foo = null /* from org-dartlang-testcase:///patch_lib.dart */; field core::bool _#Class#foo#isSet = false /* from org-dartlang-testcase:///patch_lib.dart */; diff --git a/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.weak.outline.expect b/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.weak.outline.expect index 1e68a11df46..761b05e2248 100644 --- a/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.weak.outline.expect @@ -27,5 +27,5 @@ class Class extends core::Object { Extra constant evaluation status: -Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:8:1 -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 1, effectively constant: 1 diff --git a/pkg/front_end/testcases/nnbd/injected_late_field_checks/main.dart.strong.expect b/pkg/front_end/testcases/nnbd/injected_late_field_checks/main.dart.strong.expect index 2ed0e61cf55..3a8af24e0c1 100644 --- a/pkg/front_end/testcases/nnbd/injected_late_field_checks/main.dart.strong.expect +++ b/pkg/front_end/testcases/nnbd/injected_late_field_checks/main.dart.strong.expect @@ -12,7 +12,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { late field core::int foo /* from org-dartlang-testcase:///patch_lib.dart */; constructor bar() → self2::Class diff --git a/pkg/front_end/testcases/nnbd/injected_late_field_checks/main.dart.weak.expect b/pkg/front_end/testcases/nnbd/injected_late_field_checks/main.dart.weak.expect index 2ed0e61cf55..3a8af24e0c1 100644 --- a/pkg/front_end/testcases/nnbd/injected_late_field_checks/main.dart.weak.expect +++ b/pkg/front_end/testcases/nnbd/injected_late_field_checks/main.dart.weak.expect @@ -12,7 +12,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { late field core::int foo /* from org-dartlang-testcase:///patch_lib.dart */; constructor bar() → self2::Class diff --git a/pkg/front_end/testcases/nnbd/injected_late_field_checks/main.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd/injected_late_field_checks/main.dart.weak.modular.expect index 2ed0e61cf55..3a8af24e0c1 100644 --- a/pkg/front_end/testcases/nnbd/injected_late_field_checks/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/nnbd/injected_late_field_checks/main.dart.weak.modular.expect @@ -12,7 +12,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { late field core::int foo /* from org-dartlang-testcase:///patch_lib.dart */; constructor bar() → self2::Class diff --git a/pkg/front_end/testcases/nnbd/injected_late_field_checks/main.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/injected_late_field_checks/main.dart.weak.outline.expect index 4dd67171f27..9e6ae341602 100644 --- a/pkg/front_end/testcases/nnbd/injected_late_field_checks/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/nnbd/injected_late_field_checks/main.dart.weak.outline.expect @@ -24,5 +24,5 @@ class Class extends core::Object { Extra constant evaluation status: -Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:8:1 -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 1, effectively constant: 1 diff --git a/pkg/front_end/testcases/nnbd/platform_definite_assignment/main.dart.strong.expect b/pkg/front_end/testcases/nnbd/platform_definite_assignment/main.dart.strong.expect index 08c9c20eaea..4adb050dad1 100644 --- a/pkg/front_end/testcases/nnbd/platform_definite_assignment/main.dart.strong.expect +++ b/pkg/front_end/testcases/nnbd/platform_definite_assignment/main.dart.strong.expect @@ -51,7 +51,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object /*hasConstConstructor*/ { final field core::int a; final field test::Class::T b; diff --git a/pkg/front_end/testcases/nnbd/platform_definite_assignment/main.dart.weak.expect b/pkg/front_end/testcases/nnbd/platform_definite_assignment/main.dart.weak.expect index 08c9c20eaea..4adb050dad1 100644 --- a/pkg/front_end/testcases/nnbd/platform_definite_assignment/main.dart.weak.expect +++ b/pkg/front_end/testcases/nnbd/platform_definite_assignment/main.dart.weak.expect @@ -51,7 +51,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object /*hasConstConstructor*/ { final field core::int a; final field test::Class::T b; diff --git a/pkg/front_end/testcases/nnbd/platform_definite_assignment/main.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd/platform_definite_assignment/main.dart.weak.modular.expect index 08c9c20eaea..4adb050dad1 100644 --- a/pkg/front_end/testcases/nnbd/platform_definite_assignment/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/nnbd/platform_definite_assignment/main.dart.weak.modular.expect @@ -51,7 +51,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object /*hasConstConstructor*/ { final field core::int a; final field test::Class::T b; diff --git a/pkg/front_end/testcases/nnbd/platform_definite_assignment/main.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/platform_definite_assignment/main.dart.weak.outline.expect index f41cb622329..379ba5b91f8 100644 --- a/pkg/front_end/testcases/nnbd/platform_definite_assignment/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/nnbd/platform_definite_assignment/main.dart.weak.outline.expect @@ -40,7 +40,7 @@ static method /* from org-dartlang-testcase:///patch_lib.dart */ _injectedMethod Extra constant evaluation status: -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:9:5 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:8:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:9:43 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:15:19 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:28:17 -> InstanceConstant(const _Patch{}) diff --git a/pkg/front_end/testcases/nnbd/platform_nonnullable_fields/main.dart.strong.expect b/pkg/front_end/testcases/nnbd/platform_nonnullable_fields/main.dart.strong.expect index e65cc0adf21..1123c6420f3 100644 --- a/pkg/front_end/testcases/nnbd/platform_nonnullable_fields/main.dart.strong.expect +++ b/pkg/front_end/testcases/nnbd/platform_nonnullable_fields/main.dart.strong.expect @@ -35,7 +35,7 @@ import "dart:core" as core; import "dart:_internal"; part patch_lib2.dart; -@#C1 +@/* from org-dartlang-testcase:///patch_lib2.dart */ #C1 class Class1 extends core::Object { field core::int _field = null /* from org-dartlang-testcase:///patch_lib2.dart */; static field core::int _staticField = null /* from org-dartlang-testcase:///patch_lib2.dart */; @@ -43,7 +43,7 @@ class Class1 extends core::Object { : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib2.dart */ #C1 class Class2 extends core::Object { field core::int _field /* from org-dartlang-testcase:///patch_lib2.dart */; constructor constructor2(core::int _field) → test::Class2 diff --git a/pkg/front_end/testcases/nnbd/platform_nonnullable_fields/main.dart.weak.expect b/pkg/front_end/testcases/nnbd/platform_nonnullable_fields/main.dart.weak.expect index e65cc0adf21..1123c6420f3 100644 --- a/pkg/front_end/testcases/nnbd/platform_nonnullable_fields/main.dart.weak.expect +++ b/pkg/front_end/testcases/nnbd/platform_nonnullable_fields/main.dart.weak.expect @@ -35,7 +35,7 @@ import "dart:core" as core; import "dart:_internal"; part patch_lib2.dart; -@#C1 +@/* from org-dartlang-testcase:///patch_lib2.dart */ #C1 class Class1 extends core::Object { field core::int _field = null /* from org-dartlang-testcase:///patch_lib2.dart */; static field core::int _staticField = null /* from org-dartlang-testcase:///patch_lib2.dart */; @@ -43,7 +43,7 @@ class Class1 extends core::Object { : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib2.dart */ #C1 class Class2 extends core::Object { field core::int _field /* from org-dartlang-testcase:///patch_lib2.dart */; constructor constructor2(core::int _field) → test::Class2 diff --git a/pkg/front_end/testcases/nnbd/platform_nonnullable_fields/main.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd/platform_nonnullable_fields/main.dart.weak.modular.expect index e65cc0adf21..1123c6420f3 100644 --- a/pkg/front_end/testcases/nnbd/platform_nonnullable_fields/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/nnbd/platform_nonnullable_fields/main.dart.weak.modular.expect @@ -35,7 +35,7 @@ import "dart:core" as core; import "dart:_internal"; part patch_lib2.dart; -@#C1 +@/* from org-dartlang-testcase:///patch_lib2.dart */ #C1 class Class1 extends core::Object { field core::int _field = null /* from org-dartlang-testcase:///patch_lib2.dart */; static field core::int _staticField = null /* from org-dartlang-testcase:///patch_lib2.dart */; @@ -43,7 +43,7 @@ class Class1 extends core::Object { : super core::Object::•() ; } -@#C1 +@/* from org-dartlang-testcase:///patch_lib2.dart */ #C1 class Class2 extends core::Object { field core::int _field /* from org-dartlang-testcase:///patch_lib2.dart */; constructor constructor2(core::int _field) → test::Class2 diff --git a/pkg/front_end/testcases/nnbd/platform_nonnullable_fields/main.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/platform_nonnullable_fields/main.dart.weak.outline.expect index f4034531a3f..674052b5f39 100644 --- a/pkg/front_end/testcases/nnbd/platform_nonnullable_fields/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/nnbd/platform_nonnullable_fields/main.dart.weak.outline.expect @@ -39,6 +39,6 @@ class Class2 extends core::Object { Extra constant evaluation status: -Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) -Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib2.dart:30:1 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib2.dart:37:1 -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 2, effectively constant: 2 diff --git a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.strong.expect b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.strong.expect index 96621839b77..ab03b8e9c62 100644 --- a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.strong.expect +++ b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.strong.expect @@ -48,7 +48,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() diff --git a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.expect b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.expect index 96621839b77..ab03b8e9c62 100644 --- a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.expect +++ b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.expect @@ -48,7 +48,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() diff --git a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.modular.expect index 96621839b77..ab03b8e9c62 100644 --- a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.modular.expect +++ b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.modular.expect @@ -48,7 +48,7 @@ import "dart:core" as core; import "dart:_internal"; -@#C1 +@/* from org-dartlang-testcase:///patch_lib.dart */ #C1 class Class extends core::Object { synthetic constructor •() → test::Class : super core::Object::•() diff --git a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.outline.expect index c3a9cb331f1..ddbafe99473 100644 --- a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.outline.expect +++ b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.outline.expect @@ -66,7 +66,7 @@ static method /* from org-dartlang-testcase:///patch_lib.dart */ _injectedMethod Extra constant evaluation status: -Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:8:22 -> InstanceConstant(const _Patch{}) +Evaluated: FileUriExpression @ org-dartlang-testcase:///patch_lib.dart:8:1 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:11:2 -> InstanceConstant(const _Patch{}) Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{}) Extra constant evaluation: evaluated: 3, effectively constant: 3 diff --git a/pkg/kernel/binary.md b/pkg/kernel/binary.md index 292b41d4e05..181dc6e3754 100644 --- a/pkg/kernel/binary.md +++ b/pkg/kernel/binary.md @@ -147,7 +147,7 @@ type CanonicalName { type ComponentFile { UInt32 magic = 0x90ABCDEF; - UInt32 formatVersion = 105; + UInt32 formatVersion = 106; Byte[10] shortSdkHash; List problemsAsJson; // Described in problems.md. Library[] libraries; @@ -1192,6 +1192,14 @@ type ConstantExpression extends Expression { ConstantReference constantReference; } +type FileUriConstantExpression extends Expression { + Byte tag = 108; + FileOffset fileOffset; + UriReference fileUri; + DartType type; + ConstantReference constantReference; +} + abstract type Constant extends Node { Byte tag; } diff --git a/pkg/kernel/lib/ast.dart b/pkg/kernel/lib/ast.dart index 449f3540037..91e49c790c2 100644 --- a/pkg/kernel/lib/ast.dart +++ b/pkg/kernel/lib/ast.dart @@ -8683,6 +8683,16 @@ class ConstantExpression extends Expression { } } +class FileUriConstantExpression extends ConstantExpression + implements FileUriNode { + @override + Uri fileUri; + + FileUriConstantExpression(Constant constant, + {DartType type = const DynamicType(), required this.fileUri}) + : super(constant, type); +} + /// Synthetic expression of form `let v = x in y` class Let extends Expression { VariableDeclaration variable; // Must have an initializer. diff --git a/pkg/kernel/lib/binary/ast_from_binary.dart b/pkg/kernel/lib/binary/ast_from_binary.dart index 9dac20c0bdd..5c1e9d42273 100644 --- a/pkg/kernel/lib/binary/ast_from_binary.dart +++ b/pkg/kernel/lib/binary/ast_from_binary.dart @@ -2323,6 +2323,8 @@ class BinaryBuilder { return _readSwitchExpression(); case Tag.PatternAssignment: return _readPatternAssignment(); + case Tag.FileUriConstantExpression: + return _readFileUriConstantExpression(); default: throw fail('unexpected expression tag: $tag'); } @@ -2903,6 +2905,15 @@ class BinaryBuilder { return new ConstantExpression(constant, type)..fileOffset = offset; } + Expression _readFileUriConstantExpression() { + int offset = readOffset(); + Uri fileUri = readUriReference(); + DartType type = readDartType(); + Constant constant = readConstantReference(); + return new FileUriConstantExpression(constant, type: type, fileUri: fileUri) + ..fileOffset = offset; + } + List readMapLiteralEntryList() { int length = readUInt30(); if (!useGrowableLists && length == 0) { diff --git a/pkg/kernel/lib/binary/ast_to_binary.dart b/pkg/kernel/lib/binary/ast_to_binary.dart index 2ceb70ba65d..5716b8db198 100644 --- a/pkg/kernel/lib/binary/ast_to_binary.dart +++ b/pkg/kernel/lib/binary/ast_to_binary.dart @@ -2200,10 +2200,18 @@ class BinaryPrinter implements Visitor, BinarySink { @override void visitConstantExpression(ConstantExpression node) { - writeByte(Tag.ConstantExpression); - writeOffset(node.fileOffset); - writeDartType(node.type); - writeConstantReference(node.constant); + if (node is FileUriConstantExpression) { + writeByte(Tag.FileUriConstantExpression); + writeOffset(node.fileOffset); + writeUriReference(node.fileUri); + writeDartType(node.type); + writeConstantReference(node.constant); + } else { + writeByte(Tag.ConstantExpression); + writeOffset(node.fileOffset); + writeDartType(node.type); + writeConstantReference(node.constant); + } } @override diff --git a/pkg/kernel/lib/binary/tag.dart b/pkg/kernel/lib/binary/tag.dart index fde90d7b243..b97ca65f175 100644 --- a/pkg/kernel/lib/binary/tag.dart +++ b/pkg/kernel/lib/binary/tag.dart @@ -87,6 +87,8 @@ class Tag { static const int RecordLiteral = 104; static const int ConstRecordLiteral = 105; static const int ConstantExpression = 106; + // 107 is occupied by [FutureOrType] (type). + static const int FileUriConstantExpression = 108; static const int SetLiteral = 109; static const int ConstSetLiteral = 110; static const int ListConcatenation = 111; @@ -159,7 +161,7 @@ class Tag { // 106 is occupied by [ConstantExpression]. static const int FutureOrType = 107; - // 108 is occupied by [RedirectingFactory] (member). + // 108 is occupied by [FileUriConstantExpression] (expression). // 109 is occupied by [SetLiteral] (expression). // 110 is occupied by [ConstSetLiteral] (expression). // 111 is occupied by [ListConcatenation] (expression). @@ -224,7 +226,7 @@ class Tag { /// Internal version of kernel binary format. /// Bump it when making incompatible changes in kernel binaries. /// Keep in sync with runtime/vm/kernel_binary.h, pkg/kernel/binary.md. - static const int BinaryFormatVersion = 105; + static const int BinaryFormatVersion = 106; } abstract class ConstantTag { diff --git a/pkg/kernel/lib/text/ast_to_text.dart b/pkg/kernel/lib/text/ast_to_text.dart index 39305f1173e..88a045f87c8 100644 --- a/pkg/kernel/lib/text/ast_to_text.dart +++ b/pkg/kernel/lib/text/ast_to_text.dart @@ -1801,6 +1801,9 @@ class Printer extends Visitor with VisitorVoidMixin { @override void visitFileUriExpression(FileUriExpression node) { + if (node is FileUriConstantExpression) { + writeWord('/* from ${node.fileUri} */'); + } writeExpression(node.expression); } @@ -2804,6 +2807,9 @@ class Printer extends Visitor with VisitorVoidMixin { @override void visitConstantExpression(ConstantExpression node) { + if (node is FileUriConstantExpression) { + writeWord('/* from ${node.fileUri} */'); + } writeConstantReference(node.constant); } diff --git a/runtime/vm/compiler/frontend/constant_reader.cc b/runtime/vm/compiler/frontend/constant_reader.cc index 8cd0f662b35..6dcaf58c8ac 100644 --- a/runtime/vm/compiler/frontend/constant_reader.cc +++ b/runtime/vm/compiler/frontend/constant_reader.cc @@ -119,6 +119,12 @@ InstancePtr ConstantReader::ReadConstantExpression() { helper_->SkipDartType(); result_ = ReadConstant(helper_->ReadUInt()); break; + case kFileUriConstantExpression: + helper_->ReadPosition(); + helper_->ReadUInt(); + helper_->SkipDartType(); + result_ = ReadConstant(helper_->ReadUInt()); + break; case kInvalidExpression: { helper_->ReadPosition(); // Skip position. const String& message = H.DartString(helper_->ReadStringReference()); diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc index d71072b1e14..9de53e444f6 100644 --- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc +++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc @@ -1161,6 +1161,7 @@ Fragment StreamingFlowGraphBuilder::BuildExpression(TokenPosition* position) { case kNullLiteral: return BuildNullLiteral(position); case kConstantExpression: + case kFileUriConstantExpression: return BuildConstantExpression(position, tag); case kInstantiation: return BuildPartialTearoffInstantiation(position); @@ -1170,6 +1171,8 @@ Fragment StreamingFlowGraphBuilder::BuildExpression(TokenPosition* position) { return BuildLibraryPrefixAction(position, Symbols::CheckLoaded()); case kAwaitExpression: return BuildAwaitExpression(position); + case kFileUriExpression: + return BuildFileUriExpression(position); case kConstStaticInvocation: case kConstConstructorInvocation: case kConstListLiteral: @@ -1180,7 +1183,6 @@ Fragment StreamingFlowGraphBuilder::BuildExpression(TokenPosition* position) { case kSetConcatenation: case kMapConcatenation: case kInstanceCreation: - case kFileUriExpression: case kStaticTearOff: case kSwitchExpression: case kPatternAssignment: @@ -4374,6 +4376,11 @@ Fragment StreamingFlowGraphBuilder::BuildConstantExpression( if (tag == kConstantExpression) { p = ReadPosition(); SkipDartType(); + } else if (tag == kFileUriConstantExpression) { + // TODO(alexmarkov): Use file offset together with file uri. + ReadPosition(); + ReadUInt(); + SkipDartType(); } if (position != nullptr) *position = p; const intptr_t constant_index = ReadUInt(); @@ -4508,6 +4515,16 @@ Fragment StreamingFlowGraphBuilder::BuildAwaitExpression( return instructions; } +Fragment StreamingFlowGraphBuilder::BuildFileUriExpression( + TokenPosition* position) { + ReadUInt(); // read uri + + const TokenPosition pos = ReadPosition(); // read position. + if (position != nullptr) *position = pos; + + return BuildExpression(position); // read expression. +} + Fragment StreamingFlowGraphBuilder::BuildExpressionStatement( TokenPosition* position) { Fragment instructions = BuildExpression(position); // read expression. @@ -5928,7 +5945,7 @@ Fragment StreamingFlowGraphBuilder::BuildFunctionDeclaration( if (tag != kInvalidExpression) { has_valid_annotation = true; } - if (tag == kConstantExpression) { + if (tag == kConstantExpression || tag == kFileUriConstantExpression) { auto& instance = Instance::Handle(); instance = constant_reader_.ReadConstantExpression(); if (instance.clazz() == IG->object_store()->pragma_class()) { diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h index 90d4f1f0206..740affc0216 100644 --- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h +++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h @@ -339,6 +339,7 @@ class StreamingFlowGraphBuilder : public KernelReaderHelper { Fragment BuildLibraryPrefixAction(TokenPosition* position, const String& selector); Fragment BuildAwaitExpression(TokenPosition* position); + Fragment BuildFileUriExpression(TokenPosition* position); Fragment BuildExpressionStatement(TokenPosition* position); Fragment BuildBlock(TokenPosition* position); diff --git a/runtime/vm/compiler/frontend/kernel_fingerprints.cc b/runtime/vm/compiler/frontend/kernel_fingerprints.cc index 7c19af4ea83..cc3c90acd4a 100644 --- a/runtime/vm/compiler/frontend/kernel_fingerprints.cc +++ b/runtime/vm/compiler/frontend/kernel_fingerprints.cc @@ -670,6 +670,12 @@ void KernelFingerprintHelper::CalculateExpressionFingerprint() { SkipDartType(); SkipConstantReference(); return; + case kFileUriConstantExpression: + ReadPosition(); + ReadUInt(); // skip uri + SkipDartType(); + SkipConstantReference(); + return; case kLoadLibrary: case kCheckLibraryIsLoaded: ReadUInt(); // skip library index @@ -681,6 +687,11 @@ void KernelFingerprintHelper::CalculateExpressionFingerprint() { CalculateDartTypeFingerprint(); // read runtime check type. } return; + case kFileUriExpression: + ReadUInt(); // skip uri + ReadPosition(); // read position + CalculateExpressionFingerprint(); + return; case kConstStaticInvocation: case kConstConstructorInvocation: case kConstListLiteral: @@ -691,7 +702,6 @@ void KernelFingerprintHelper::CalculateExpressionFingerprint() { case kSetConcatenation: case kMapConcatenation: case kInstanceCreation: - case kFileUriExpression: case kStaticTearOff: case kSwitchExpression: case kPatternAssignment: diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.cc b/runtime/vm/compiler/frontend/kernel_translation_helper.cc index 1ebee58d8a5..0e4b3ca6391 100644 --- a/runtime/vm/compiler/frontend/kernel_translation_helper.cc +++ b/runtime/vm/compiler/frontend/kernel_translation_helper.cc @@ -2754,6 +2754,12 @@ void KernelReaderHelper::SkipExpression() { SkipDartType(); // read type. SkipConstantReference(); return; + case kFileUriConstantExpression: + ReadPosition(); // read position. + ReadUInt(); // skip uri + SkipDartType(); // read type. + SkipConstantReference(); + return; case kLoadLibrary: case kCheckLibraryIsLoaded: ReadUInt(); // skip library index @@ -2765,6 +2771,11 @@ void KernelReaderHelper::SkipExpression() { SkipDartType(); // read runtime check type. } return; + case kFileUriExpression: + ReadUInt(); // skip uri + ReadPosition(); // read position + SkipExpression(); // read expression + return; case kConstStaticInvocation: case kConstConstructorInvocation: case kConstListLiteral: @@ -2775,7 +2786,6 @@ void KernelReaderHelper::SkipExpression() { case kSetConcatenation: case kMapConcatenation: case kInstanceCreation: - case kFileUriExpression: case kStaticTearOff: case kSwitchExpression: case kPatternAssignment: diff --git a/runtime/vm/compiler/frontend/scope_builder.cc b/runtime/vm/compiler/frontend/scope_builder.cc index c19e4427b3e..fe02792dfb6 100644 --- a/runtime/vm/compiler/frontend/scope_builder.cc +++ b/runtime/vm/compiler/frontend/scope_builder.cc @@ -966,6 +966,12 @@ void ScopeBuilder::VisitExpression() { helper_.SkipDartType(); helper_.SkipConstantReference(); return; + case kFileUriConstantExpression: + helper_.ReadPosition(); + helper_.ReadUInt(); + helper_.SkipDartType(); + helper_.SkipConstantReference(); + return; case kInstantiation: { VisitExpression(); const intptr_t list_length = @@ -986,6 +992,11 @@ void ScopeBuilder::VisitExpression() { VisitDartType(); // read runtime check type. } return; + case kFileUriExpression: + helper_.ReadUInt(); // read uri. + helper_.ReadPosition(); // read position. + VisitExpression(); // read expression. + return; case kConstStaticInvocation: case kConstConstructorInvocation: case kConstListLiteral: @@ -996,7 +1007,6 @@ void ScopeBuilder::VisitExpression() { case kSetConcatenation: case kMapConcatenation: case kInstanceCreation: - case kFileUriExpression: case kStaticTearOff: case kSwitchExpression: case kPatternAssignment: diff --git a/runtime/vm/kernel_binary.h b/runtime/vm/kernel_binary.h index 186b6e9b48b..88146d8ff7b 100644 --- a/runtime/vm/kernel_binary.h +++ b/runtime/vm/kernel_binary.h @@ -18,7 +18,7 @@ namespace kernel { // package:kernel/binary.md. static const uint32_t kMagicProgramFile = 0x90ABCDEFu; -static const uint32_t kSupportedKernelFormatVersion = 105; +static const uint32_t kSupportedKernelFormatVersion = 106; // Keep in sync with package:kernel/lib/binary/tag.dart #define KERNEL_TAG_LIST(V) \ @@ -136,6 +136,7 @@ static const uint32_t kSupportedKernelFormatVersion = 105; V(InlineType, 103) \ V(ConstantExpression, 106) \ V(FutureOrType, 107) \ + V(FileUriConstantExpression, 108) \ V(InstanceGet, 118) \ V(InstanceSet, 119) \ V(InstanceInvocation, 120) \ diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc index ffdb9a26095..d75eed46b9b 100644 --- a/runtime/vm/kernel_loader.cc +++ b/runtime/vm/kernel_loader.cc @@ -1744,9 +1744,12 @@ void KernelLoader::ReadVMAnnotations(const Library& library, for (intptr_t i = 0; i < annotation_count; ++i) { const intptr_t tag = helper_.PeekTag(); - if (tag == kConstantExpression) { + if (tag == kConstantExpression || tag == kFileUriConstantExpression) { helper_.ReadByte(); // Skip the tag. helper_.ReadPosition(); // Skip fileOffset. + if (tag == kFileUriConstantExpression) { + helper_.ReadUInt(); // Skip uri. + } helper_.SkipDartType(); // Skip type. const intptr_t index_in_constant_table = helper_.ReadUInt();