diff --git a/pkg/front_end/lib/src/builder/formal_parameter_builder.dart b/pkg/front_end/lib/src/builder/formal_parameter_builder.dart index d8d729f3a4e..e2efd05b800 100644 --- a/pkg/front_end/lib/src/builder/formal_parameter_builder.dart +++ b/pkg/front_end/lib/src/builder/formal_parameter_builder.dart @@ -120,8 +120,9 @@ class FormalParameterBuilder extends NamedBuilderImpl final bool isExtensionThis; - /// Whether this formal parameter is a wildcard variable. - final bool isWildcard; + /// If this is a wildcard variable, this holds the index used to create a + /// uniquely named kernel variable for it. + final int? _wildcardIndex; final int? nameOffset; @@ -137,12 +138,13 @@ class FormalParameterBuilder extends NamedBuilderImpl this.isExtensionThis = false, Token? defaultValueToken, required this.hasImmediatelyDeclaredInitializer, - this.isWildcard = false, + int? wildcardIndex, this.publicName, required this.nameOffset, required this.isClosureContextLoweringEnabled, }) : this.hasDeclaredInitializer = hasImmediatelyDeclaredInitializer, - this._defaultValueToken = defaultValueToken { + this._defaultValueToken = defaultValueToken, + this._wildcardIndex = wildcardIndex { type.registerInferredTypeListener(this); } @@ -177,6 +179,9 @@ class FormalParameterBuilder extends NamedBuilderImpl @override bool get isConst => modifiers.isConst; + /// Whether this formal parameter is a wildcard variable. + bool get isWildcard => _wildcardIndex != null; + // An initializing formal parameter might be final without its // VariableDeclaration being final. See // [ProcedureBuilder.computeFormalParameterInitializerScope].. @@ -206,6 +211,9 @@ class FormalParameterBuilder extends NamedBuilderImpl // If the parameter is a private named parameter, use the public name // for the corresponding variable. _ when publicName != null => publicName, + _ when _wildcardIndex != null => createWildcardFormalParameterName( + _wildcardIndex, + ), _ => name, }; @@ -275,6 +283,12 @@ class FormalParameterBuilder extends NamedBuilderImpl } } + /// Creates the [FormalParameterBuilder] for a declaring parameter used in the + /// formal parameters in a primary constructor. + /// + /// This parameter is marked as an initializing formal whose type is inferred + /// and replaces the original parameter in the primary constructor + /// declaration. FormalParameterBuilder forPrimaryConstructor(FragmentFactory builderFactory) { return new FormalParameterBuilder( kind: kind, @@ -290,45 +304,11 @@ class FormalParameterBuilder extends NamedBuilderImpl defaultValueToken: copyDefaultValueToken(), hasImmediatelyDeclaredInitializer: hasImmediatelyDeclaredInitializer, publicName: publicName, + wildcardIndex: _wildcardIndex, isClosureContextLoweringEnabled: isClosureContextLoweringEnabled, )..variable = variable; } - FormalParameterBuilder forFormalParameterInitializerScope() { - if (isInitializingFormal) { - return new FormalParameterBuilder( - kind: kind, - modifiers: modifiers | Modifiers.Final | Modifiers.InitializingFormal, - type: type, - name: name, - fileOffset: fileOffset, - nameOffset: nameOffset, - fileUri: fileUri, - isExtensionThis: isExtensionThis, - hasImmediatelyDeclaredInitializer: hasImmediatelyDeclaredInitializer, - publicName: publicName, - isClosureContextLoweringEnabled: isClosureContextLoweringEnabled, - )..variable = variable; - } else if (isSuperInitializingFormal) { - return new FormalParameterBuilder( - kind: kind, - modifiers: - modifiers | Modifiers.Final | Modifiers.SuperInitializingFormal, - type: type, - name: name, - fileOffset: fileOffset, - nameOffset: nameOffset, - fileUri: fileUri, - isExtensionThis: isExtensionThis, - hasImmediatelyDeclaredInitializer: hasImmediatelyDeclaredInitializer, - publicName: publicName, - isClosureContextLoweringEnabled: isClosureContextLoweringEnabled, - )..variable = variable; - } else { - return this; - } - } - void finalizeInitializingFormal( DeclarationBuilder declarationBuilder, SourceConstructorBuilder constructorBuilder, diff --git a/pkg/front_end/lib/src/builder/inferable_type_builder.dart b/pkg/front_end/lib/src/builder/inferable_type_builder.dart index 0d15d747ef9..d3f9ed8c782 100644 --- a/pkg/front_end/lib/src/builder/inferable_type_builder.dart +++ b/pkg/front_end/lib/src/builder/inferable_type_builder.dart @@ -48,6 +48,7 @@ mixin InferableTypeBuilderMixin { void registerInferredTypeListener(InferredTypeListener onType) { if (isExplicit) return; if (hasType) { + // Coverage-ignore-block(suite): Not run. onType.onInferredType(type); } else { (_listeners ??= []).add(onType); diff --git a/pkg/front_end/lib/src/fragment/constructor/declaration.dart b/pkg/front_end/lib/src/fragment/constructor/declaration.dart index 70abdb8d004..49d542dce7c 100644 --- a/pkg/front_end/lib/src/fragment/constructor/declaration.dart +++ b/pkg/front_end/lib/src/fragment/constructor/declaration.dart @@ -195,7 +195,7 @@ mixin _ConstructorDeclarationMixin // variable in the initializer list. if (formal.isWildcard) continue; - list.add(formal.forFormalParameterInitializerScope()); + list.add(formal); } return list; } diff --git a/pkg/front_end/lib/src/kernel/body_builder.dart b/pkg/front_end/lib/src/kernel/body_builder.dart index f53912dd6e5..c1888f4d18f 100644 --- a/pkg/front_end/lib/src/kernel/body_builder.dart +++ b/pkg/front_end/lib/src/kernel/body_builder.dart @@ -5414,11 +5414,9 @@ class BodyBuilderImpl extends StackListenerImpl ); bool isWildcard = libraryFeatures.wildcardVariables.isEnabled && parameterName == '_'; + int? wildcardIndex; if (isWildcard) { - parameterName = createWildcardFormalParameterName( - wildcardVariableIndex, - ); - wildcardVariableIndex++; + wildcardIndex = wildcardVariableIndex++; } if (memberKind.isFunctionType) { push( @@ -5439,7 +5437,7 @@ class BodyBuilderImpl extends StackListenerImpl nameOffset: nameOffset, fileUri: uri, hasImmediatelyDeclaredInitializer: initializerStart != null, - isWildcard: isWildcard, + wildcardIndex: wildcardIndex, publicName: publicName, isClosureContextLoweringEnabled: isClosureContextLoweringEnabled, ); diff --git a/pkg/front_end/lib/src/kernel/resolver.dart b/pkg/front_end/lib/src/kernel/resolver.dart index 548c6d63ff8..3f6d0aa9f1a 100644 --- a/pkg/front_end/lib/src/kernel/resolver.dart +++ b/pkg/front_end/lib/src/kernel/resolver.dart @@ -15,7 +15,6 @@ import 'package:kernel/core_types.dart'; import 'package:kernel/type_environment.dart'; import '../api_prototype/experimental_flags.dart'; -import '../api_prototype/lowering_predicates.dart'; import '../base/compiler_context.dart'; import '../base/constant_context.dart' show ConstantContext; import '../base/crash.dart'; @@ -891,11 +890,9 @@ class Resolver { bool isWildcard = libraryFeatures.wildcardVariables.isEnabled && formalName == '_'; + int? wildcardIndex; if (isWildcard) { - formalName = createWildcardFormalParameterName( - wildcardVariableIndex, - ); - wildcardVariableIndex++; + wildcardIndex = wildcardVariableIndex++; } return new FormalParameterBuilder( kind: FormalParameterKind.requiredPositional, @@ -906,7 +903,7 @@ class Resolver { fileOffset: formal.fileOffset, fileUri: fileUri, hasImmediatelyDeclaredInitializer: false, - isWildcard: isWildcard, + wildcardIndex: wildcardIndex, isClosureContextLoweringEnabled: libraryBuilder .loader .target diff --git a/pkg/front_end/lib/src/kernel/wildcard_lowering.dart b/pkg/front_end/lib/src/kernel/wildcard_lowering.dart index 96afacbe3ba..8c9ddb49cf2 100644 --- a/pkg/front_end/lib/src/kernel/wildcard_lowering.dart +++ b/pkg/front_end/lib/src/kernel/wildcard_lowering.dart @@ -24,7 +24,9 @@ String createWildcardVariableName(int index) { /// Whether the given [name] is a wildcard formal parameter. bool isWildcardLoweredFormalParameter(String name) { - return name.startsWith(wildcardPrefix) && name.endsWith(wildcardFormalSuffix); + return name.startsWith(wildcardPrefix) && + // Coverage-ignore(suite): Not run. + name.endsWith(wildcardFormalSuffix); } // Coverage-ignore(suite): Not run. diff --git a/pkg/front_end/lib/src/source/fragment_factory.dart b/pkg/front_end/lib/src/source/fragment_factory.dart index dc2d6a8121f..dea1d1d2fa0 100644 --- a/pkg/front_end/lib/src/source/fragment_factory.dart +++ b/pkg/front_end/lib/src/source/fragment_factory.dart @@ -483,7 +483,6 @@ abstract class FragmentFactory { required bool hasSuper, required int nameOffset, required Token? initializerToken, - bool lowerWildcard = false, }); ConstructorReferenceBuilder addConstructorReference( diff --git a/pkg/front_end/lib/src/source/fragment_factory_impl.dart b/pkg/front_end/lib/src/source/fragment_factory_impl.dart index ff88931fda9..d6e0a9d227b 100644 --- a/pkg/front_end/lib/src/source/fragment_factory_impl.dart +++ b/pkg/front_end/lib/src/source/fragment_factory_impl.dart @@ -2247,7 +2247,6 @@ class FragmentFactoryImpl implements FragmentFactory { required bool hasSuper, required int nameOffset, required Token? initializerToken, - bool lowerWildcard = false, }) { assert( !hasThis || !hasSuper, @@ -2259,24 +2258,23 @@ class FragmentFactoryImpl implements FragmentFactory { if (hasSuper) { modifiers |= Modifiers.SuperInitializingFormal; } - String formalName = name; bool isWildcard = - libraryFeatures.wildcardVariables.isEnabled && formalName == '_'; - if (isWildcard && lowerWildcard) { - formalName = createWildcardFormalParameterName(wildcardVariableIndex); - wildcardVariableIndex++; + libraryFeatures.wildcardVariables.isEnabled && name == '_'; + int? wildcardIndex; + if (isWildcard) { + wildcardIndex = wildcardVariableIndex++; } FormalParameterBuilder formal = new FormalParameterBuilder( kind: kind, modifiers: modifiers, type: type, - name: formalName, + name: name, nameOffset: nameOffset, fileOffset: nameOffset, fileUri: _compilationUnit.fileUri, defaultValueToken: initializerToken, hasImmediatelyDeclaredInitializer: initializerToken != null, - isWildcard: isWildcard, + wildcardIndex: wildcardIndex, publicName: publicName, isClosureContextLoweringEnabled: _compilationUnit .loader diff --git a/pkg/front_end/lib/src/source/outline_builder.dart b/pkg/front_end/lib/src/source/outline_builder.dart index 07fba2976c2..2942259cad7 100644 --- a/pkg/front_end/lib/src/source/outline_builder.dart +++ b/pkg/front_end/lib/src/source/outline_builder.dart @@ -3087,9 +3087,6 @@ class OutlineBuilder extends StackListenerImpl { hasSuper: superKeyword != null, nameOffset: identifier?.nameOffset ?? nameToken.charOffset, initializerToken: initializerStart, - // Extension type parameters should not have a lowered name for - // wildcard variables. - lowerWildcard: declarationContext != DeclarationContext.ExtensionType, ), ); } diff --git a/pkg/front_end/testcases/dart2js/issue56803.dart.strong.expect b/pkg/front_end/testcases/dart2js/issue56803.dart.strong.expect index 7d9aa20e970..96b490ba533 100644 --- a/pkg/front_end/testcases/dart2js/issue56803.dart.strong.expect +++ b/pkg/front_end/testcases/dart2js/issue56803.dart.strong.expect @@ -10,12 +10,12 @@ extension type Ext(core::String _) implements core::String { constructor tearoff • = self::Ext|constructor#_#new#tearOff; } static const field core::String? maybe = #C5; -static extension-type-member const method Ext|constructor#_(core::String _) → self::Ext /* erasure=core::String */ { - lowered final self::Ext /* erasure=core::String */ #this = _; +static extension-type-member const method Ext|constructor#_(wildcard core::String _#wc0#formal) → self::Ext /* erasure=core::String */ { + lowered final self::Ext /* erasure=core::String */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method Ext|constructor#_#_#tearOff(core::String _) → self::Ext /* erasure=core::String */ - return self::Ext|constructor#_(_); +static extension-type-member synthetic method Ext|constructor#_#_#tearOff(core::String _#wc0#formal) → self::Ext /* erasure=core::String */ + return self::Ext|constructor#_(_#wc0#formal); static extension-type-member const method Ext|constructor#() → self::Ext /* erasure=core::String */ { lowered final self::Ext /* erasure=core::String */ #this = "OK"; assert(!(#C5 == null), "Must not be null"); diff --git a/pkg/front_end/testcases/dart2js/issue56803.dart.strong.modular.expect b/pkg/front_end/testcases/dart2js/issue56803.dart.strong.modular.expect index 7d9aa20e970..96b490ba533 100644 --- a/pkg/front_end/testcases/dart2js/issue56803.dart.strong.modular.expect +++ b/pkg/front_end/testcases/dart2js/issue56803.dart.strong.modular.expect @@ -10,12 +10,12 @@ extension type Ext(core::String _) implements core::String { constructor tearoff • = self::Ext|constructor#_#new#tearOff; } static const field core::String? maybe = #C5; -static extension-type-member const method Ext|constructor#_(core::String _) → self::Ext /* erasure=core::String */ { - lowered final self::Ext /* erasure=core::String */ #this = _; +static extension-type-member const method Ext|constructor#_(wildcard core::String _#wc0#formal) → self::Ext /* erasure=core::String */ { + lowered final self::Ext /* erasure=core::String */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method Ext|constructor#_#_#tearOff(core::String _) → self::Ext /* erasure=core::String */ - return self::Ext|constructor#_(_); +static extension-type-member synthetic method Ext|constructor#_#_#tearOff(core::String _#wc0#formal) → self::Ext /* erasure=core::String */ + return self::Ext|constructor#_(_#wc0#formal); static extension-type-member const method Ext|constructor#() → self::Ext /* erasure=core::String */ { lowered final self::Ext /* erasure=core::String */ #this = "OK"; assert(!(#C5 == null), "Must not be null"); diff --git a/pkg/front_end/testcases/dart2js/issue56803.dart.strong.outline.expect b/pkg/front_end/testcases/dart2js/issue56803.dart.strong.outline.expect index b8b149cd268..b8042e6e2b4 100644 --- a/pkg/front_end/testcases/dart2js/issue56803.dart.strong.outline.expect +++ b/pkg/front_end/testcases/dart2js/issue56803.dart.strong.outline.expect @@ -10,12 +10,12 @@ extension type Ext(core::String _) implements core::String { constructor tearoff • = self::Ext|constructor#_#new#tearOff; } static const field core::String? maybe = const core::bool::fromEnvironment("not there") ?{core::String?} "string" : null; -static extension-type-member const method Ext|constructor#_(core::String _) → self::Ext /* erasure=core::String */ { - lowered final self::Ext /* erasure=core::String */ #this = _; +static extension-type-member const method Ext|constructor#_(wildcard core::String _#wc0#formal) → self::Ext /* erasure=core::String */ { + lowered final self::Ext /* erasure=core::String */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method Ext|constructor#_#_#tearOff(core::String _) → self::Ext /* erasure=core::String */ - return self::Ext|constructor#_(_); +static extension-type-member synthetic method Ext|constructor#_#_#tearOff(core::String _#wc0#formal) → self::Ext /* erasure=core::String */ + return self::Ext|constructor#_(_#wc0#formal); static extension-type-member const method Ext|constructor#() → self::Ext /* erasure=core::String */ { lowered final self::Ext /* erasure=core::String */ #this = "OK"; assert(!(self::maybe == null), "Must not be null"); diff --git a/pkg/front_end/testcases/dart2js/issue56803.dart.strong.transformed.expect b/pkg/front_end/testcases/dart2js/issue56803.dart.strong.transformed.expect index cfaffaab19f..cddab8a9c56 100644 --- a/pkg/front_end/testcases/dart2js/issue56803.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/dart2js/issue56803.dart.strong.transformed.expect @@ -10,12 +10,12 @@ extension type Ext(core::String _) implements core::String { constructor tearoff • = self::Ext|constructor#_#new#tearOff; } static const field core::String? maybe = #C5; -static extension-type-member const method Ext|constructor#_(core::String _) → self::Ext /* erasure=core::String */ { - lowered final self::Ext /* erasure=core::String */ #this = _; +static extension-type-member const method Ext|constructor#_(wildcard core::String _#wc0#formal) → self::Ext /* erasure=core::String */ { + lowered final self::Ext /* erasure=core::String */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method Ext|constructor#_#_#tearOff(core::String _) → self::Ext /* erasure=core::String */ - return self::Ext|constructor#_(_); +static extension-type-member synthetic method Ext|constructor#_#_#tearOff(core::String _#wc0#formal) → self::Ext /* erasure=core::String */ + return self::Ext|constructor#_(_#wc0#formal); static extension-type-member const method Ext|constructor#() → self::Ext /* erasure=core::String */ { lowered final self::Ext /* erasure=core::String */ #this = "OK"; assert(!(#C5 == null), "Must not be null"); diff --git a/pkg/front_end/testcases/dart2js/js_interop_transforms/isa.dart.strong.expect b/pkg/front_end/testcases/dart2js/js_interop_transforms/isa.dart.strong.expect index 1470ed75d5d..8dc40e18ad0 100644 --- a/pkg/front_end/testcases/dart2js/js_interop_transforms/isa.dart.strong.expect +++ b/pkg/front_end/testcases/dart2js/js_interop_transforms/isa.dart.strong.expect @@ -27,30 +27,30 @@ extension type CustomJSArray(js_::JSArray /* erasure=_interceptors::JSArray */ _) → self::CustomJSArray /* erasure=_interceptors::JSArray */ { - lowered final self::CustomJSArray /* erasure=_interceptors::JSArray */ #this = _; +static extension-type-member synthetic method CustomTypedArray|constructor#_#new#tearOff(js_::JSTypedArray /* erasure=dart.typed_data.implementation::NativeTypedData */ _#wc2#formal) → self::CustomTypedArray /* erasure=dart.typed_data.implementation::NativeTypedData */ + return self::CustomTypedArray|constructor#(_#wc2#formal); +static extension-type-member method CustomJSArray|constructor#(wildcard js_::JSArray /* erasure=_interceptors::JSArray */ _#wc3#formal) → self::CustomJSArray /* erasure=_interceptors::JSArray */ { + lowered final self::CustomJSArray /* erasure=_interceptors::JSArray */ #this = _#wc3#formal; return #this; } -static extension-type-member synthetic method CustomJSArray|constructor#_#new#tearOff(js_::JSArray /* erasure=_interceptors::JSArray */ _) → self::CustomJSArray /* erasure=_interceptors::JSArray */ - return self::CustomJSArray|constructor#(_); +static extension-type-member synthetic method CustomJSArray|constructor#_#new#tearOff(js_::JSArray /* erasure=_interceptors::JSArray */ _#wc3#formal) → self::CustomJSArray /* erasure=_interceptors::JSArray */ + return self::CustomJSArray|constructor#(_#wc3#formal); static method test(js_::JSAny /* erasure=core::Object */ any, js_::JSAny? /* erasure=core::Object? */ nullableAny, core::Object obj, core::Object? nullableObj) → void { js_::NullableObjectUtilExtension|isA(any); js_::NullableObjectUtilExtension|isA(any); diff --git a/pkg/front_end/testcases/dart2js/js_interop_transforms/isa.dart.strong.modular.expect b/pkg/front_end/testcases/dart2js/js_interop_transforms/isa.dart.strong.modular.expect index 1470ed75d5d..8dc40e18ad0 100644 --- a/pkg/front_end/testcases/dart2js/js_interop_transforms/isa.dart.strong.modular.expect +++ b/pkg/front_end/testcases/dart2js/js_interop_transforms/isa.dart.strong.modular.expect @@ -27,30 +27,30 @@ extension type CustomJSArray(js_::JSArray /* erasure=_interceptors::JSArray */ _) → self::CustomJSArray /* erasure=_interceptors::JSArray */ { - lowered final self::CustomJSArray /* erasure=_interceptors::JSArray */ #this = _; +static extension-type-member synthetic method CustomTypedArray|constructor#_#new#tearOff(js_::JSTypedArray /* erasure=dart.typed_data.implementation::NativeTypedData */ _#wc2#formal) → self::CustomTypedArray /* erasure=dart.typed_data.implementation::NativeTypedData */ + return self::CustomTypedArray|constructor#(_#wc2#formal); +static extension-type-member method CustomJSArray|constructor#(wildcard js_::JSArray /* erasure=_interceptors::JSArray */ _#wc3#formal) → self::CustomJSArray /* erasure=_interceptors::JSArray */ { + lowered final self::CustomJSArray /* erasure=_interceptors::JSArray */ #this = _#wc3#formal; return #this; } -static extension-type-member synthetic method CustomJSArray|constructor#_#new#tearOff(js_::JSArray /* erasure=_interceptors::JSArray */ _) → self::CustomJSArray /* erasure=_interceptors::JSArray */ - return self::CustomJSArray|constructor#(_); +static extension-type-member synthetic method CustomJSArray|constructor#_#new#tearOff(js_::JSArray /* erasure=_interceptors::JSArray */ _#wc3#formal) → self::CustomJSArray /* erasure=_interceptors::JSArray */ + return self::CustomJSArray|constructor#(_#wc3#formal); static method test(js_::JSAny /* erasure=core::Object */ any, js_::JSAny? /* erasure=core::Object? */ nullableAny, core::Object obj, core::Object? nullableObj) → void { js_::NullableObjectUtilExtension|isA(any); js_::NullableObjectUtilExtension|isA(any); diff --git a/pkg/front_end/testcases/dart2js/js_interop_transforms/isa.dart.strong.outline.expect b/pkg/front_end/testcases/dart2js/js_interop_transforms/isa.dart.strong.outline.expect index 439f9336bdd..1d64978e487 100644 --- a/pkg/front_end/testcases/dart2js/js_interop_transforms/isa.dart.strong.outline.expect +++ b/pkg/front_end/testcases/dart2js/js_interop_transforms/isa.dart.strong.outline.expect @@ -27,22 +27,22 @@ extension type CustomJSArray(js_::JSArray /* erasure=_interceptors::JSArray */ _) → self::CustomJSArray /* erasure=_interceptors::JSArray */ +static extension-type-member synthetic method CustomTypedArray|constructor#_#new#tearOff(js_::JSTypedArray /* erasure=dart.typed_data.implementation::NativeTypedData */ _#wc2#formal) → self::CustomTypedArray /* erasure=dart.typed_data.implementation::NativeTypedData */ + return self::CustomTypedArray|constructor#(_#wc2#formal); +static extension-type-member method CustomJSArray|constructor#(wildcard js_::JSArray /* erasure=_interceptors::JSArray */ _#wc3#formal) → self::CustomJSArray /* erasure=_interceptors::JSArray */ ; -static extension-type-member synthetic method CustomJSArray|constructor#_#new#tearOff(js_::JSArray /* erasure=_interceptors::JSArray */ _) → self::CustomJSArray /* erasure=_interceptors::JSArray */ - return self::CustomJSArray|constructor#(_); +static extension-type-member synthetic method CustomJSArray|constructor#_#new#tearOff(js_::JSArray /* erasure=_interceptors::JSArray */ _#wc3#formal) → self::CustomJSArray /* erasure=_interceptors::JSArray */ + return self::CustomJSArray|constructor#(_#wc3#formal); static method test(js_::JSAny /* erasure=core::Object */ any, js_::JSAny? /* erasure=core::Object? */ nullableAny, core::Object obj, core::Object? nullableObj) → void ; static method main() → void diff --git a/pkg/front_end/testcases/dart2js/js_interop_transforms/isa.dart.strong.transformed.expect b/pkg/front_end/testcases/dart2js/js_interop_transforms/isa.dart.strong.transformed.expect index 5c2d01f59d7..98813129b38 100644 --- a/pkg/front_end/testcases/dart2js/js_interop_transforms/isa.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/dart2js/js_interop_transforms/isa.dart.strong.transformed.expect @@ -28,30 +28,30 @@ extension type CustomJSArray(js_::JSArray /* erasure=_interceptors::JSArray */ _) → self::CustomJSArray /* erasure=_interceptors::JSArray */ { - lowered final self::CustomJSArray /* erasure=_interceptors::JSArray */ #this = _; +static extension-type-member synthetic method CustomTypedArray|constructor#_#new#tearOff(js_::JSTypedArray /* erasure=dart.typed_data.implementation::NativeTypedData */ _#wc2#formal) → self::CustomTypedArray /* erasure=dart.typed_data.implementation::NativeTypedData */ + return self::CustomTypedArray|constructor#(_#wc2#formal); +static extension-type-member method CustomJSArray|constructor#(wildcard js_::JSArray /* erasure=_interceptors::JSArray */ _#wc3#formal) → self::CustomJSArray /* erasure=_interceptors::JSArray */ { + lowered final self::CustomJSArray /* erasure=_interceptors::JSArray */ #this = _#wc3#formal; return #this; } -static extension-type-member synthetic method CustomJSArray|constructor#_#new#tearOff(js_::JSArray /* erasure=_interceptors::JSArray */ _) → self::CustomJSArray /* erasure=_interceptors::JSArray */ - return self::CustomJSArray|constructor#(_); +static extension-type-member synthetic method CustomJSArray|constructor#_#new#tearOff(js_::JSArray /* erasure=_interceptors::JSArray */ _#wc3#formal) → self::CustomJSArray /* erasure=_interceptors::JSArray */ + return self::CustomJSArray|constructor#(_#wc3#formal); static method test(js_::JSAny /* erasure=core::Object */ any, js_::JSAny? /* erasure=core::Object? */ nullableAny, core::Object obj, core::Object? nullableObj) → void { js_::_isJSAny(any); js_::_isNullableJSAny(any); diff --git a/pkg/front_end/testcases/dart2wasm/issue61222.dart.strong.expect b/pkg/front_end/testcases/dart2wasm/issue61222.dart.strong.expect index 580f72feeb0..82728e849b6 100644 --- a/pkg/front_end/testcases/dart2wasm/issue61222.dart.strong.expect +++ b/pkg/front_end/testcases/dart2wasm/issue61222.dart.strong.expect @@ -47,12 +47,12 @@ static method main() → void { #t4.{core::List::add}{Invariant}(new self::C::v1()){(self::C) → void}; } =>#t4; } -static extension-type-member const method E|constructor#_(core::int? _) → self::E% /* erasure=core::int?, declared=! */ { - lowered final self::E% /* erasure=core::int?, declared=! */ #this = _; +static extension-type-member const method E|constructor#_(wildcard core::int? _#wc0#formal) → self::E% /* erasure=core::int?, declared=! */ { + lowered final self::E% /* erasure=core::int?, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method E|constructor#_#_#tearOff(core::int? _) → self::E% /* erasure=core::int?, declared=! */ - return self::E|constructor#_(_); +static extension-type-member synthetic method E|constructor#_#_#tearOff(core::int? _#wc0#formal) → self::E% /* erasure=core::int?, declared=! */ + return self::E|constructor#_(_#wc0#formal); static extension-type-member const method E|constructor#vn() → self::E% /* erasure=core::int?, declared=! */ { lowered final self::E% /* erasure=core::int?, declared=! */ #this; #this = self::E|constructor#_(null); diff --git a/pkg/front_end/testcases/dart2wasm/issue61222.dart.strong.transformed.expect b/pkg/front_end/testcases/dart2wasm/issue61222.dart.strong.transformed.expect index d19e409eba1..5455b07892c 100644 --- a/pkg/front_end/testcases/dart2wasm/issue61222.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/dart2wasm/issue61222.dart.strong.transformed.expect @@ -44,12 +44,12 @@ static method main() → void { #t4.{core::List::add}{Invariant}(new self::C::v1()){(self::C) → void}; } =>#t4; } -static extension-type-member const method E|constructor#_(final core::int? _) → self::E% /* erasure=core::int?, declared=! */ { - lowered final self::E% /* erasure=core::int?, declared=! */ #this = _; +static extension-type-member const method E|constructor#_(final wildcard core::int? _#wc0#formal) → self::E% /* erasure=core::int?, declared=! */ { + lowered final self::E% /* erasure=core::int?, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method E|constructor#_#_#tearOff(final core::int? _) → self::E% /* erasure=core::int?, declared=! */ - return self::E|constructor#_(_); +static extension-type-member synthetic method E|constructor#_#_#tearOff(final core::int? _#wc0#formal) → self::E% /* erasure=core::int?, declared=! */ + return self::E|constructor#_(_#wc0#formal); static extension-type-member const method E|constructor#vn() → self::E% /* erasure=core::int?, declared=! */ { lowered final self::E% /* erasure=core::int?, declared=! */ #this; #this = self::E|constructor#_(null); diff --git a/pkg/front_end/testcases/dartdevc/js_interop_transforms/isa.dart.strong.expect b/pkg/front_end/testcases/dartdevc/js_interop_transforms/isa.dart.strong.expect index 8ed94b21dc1..a5caf2a5979 100644 --- a/pkg/front_end/testcases/dartdevc/js_interop_transforms/isa.dart.strong.expect +++ b/pkg/front_end/testcases/dartdevc/js_interop_transforms/isa.dart.strong.expect @@ -27,30 +27,30 @@ extension type CustomJSArray(js_::JSArray /* erasure=dart._interceptors::JSArray */ _) → self::CustomJSArray /* erasure=dart._interceptors::JSArray */ { - lowered final self::CustomJSArray /* erasure=dart._interceptors::JSArray */ #this = _; +static extension-type-member synthetic method CustomTypedArray|constructor#_#new#tearOff(js_::JSTypedArray /* erasure=dart.typed_data.implementation::NativeTypedData */ _#wc2#formal) → self::CustomTypedArray /* erasure=dart.typed_data.implementation::NativeTypedData */ + return self::CustomTypedArray|constructor#(_#wc2#formal); +static extension-type-member method CustomJSArray|constructor#(wildcard js_::JSArray /* erasure=dart._interceptors::JSArray */ _#wc3#formal) → self::CustomJSArray /* erasure=dart._interceptors::JSArray */ { + lowered final self::CustomJSArray /* erasure=dart._interceptors::JSArray */ #this = _#wc3#formal; return #this; } -static extension-type-member synthetic method CustomJSArray|constructor#_#new#tearOff(js_::JSArray /* erasure=dart._interceptors::JSArray */ _) → self::CustomJSArray /* erasure=dart._interceptors::JSArray */ - return self::CustomJSArray|constructor#(_); +static extension-type-member synthetic method CustomJSArray|constructor#_#new#tearOff(js_::JSArray /* erasure=dart._interceptors::JSArray */ _#wc3#formal) → self::CustomJSArray /* erasure=dart._interceptors::JSArray */ + return self::CustomJSArray|constructor#(_#wc3#formal); static method test(js_::JSAny /* erasure=core::Object */ any, js_::JSAny? /* erasure=core::Object? */ nullableAny, core::Object obj, core::Object? nullableObj) → void { js_::NullableObjectUtilExtension|isA(any); js_::NullableObjectUtilExtension|isA(any); diff --git a/pkg/front_end/testcases/dartdevc/js_interop_transforms/isa.dart.strong.modular.expect b/pkg/front_end/testcases/dartdevc/js_interop_transforms/isa.dart.strong.modular.expect index 8ed94b21dc1..a5caf2a5979 100644 --- a/pkg/front_end/testcases/dartdevc/js_interop_transforms/isa.dart.strong.modular.expect +++ b/pkg/front_end/testcases/dartdevc/js_interop_transforms/isa.dart.strong.modular.expect @@ -27,30 +27,30 @@ extension type CustomJSArray(js_::JSArray /* erasure=dart._interceptors::JSArray */ _) → self::CustomJSArray /* erasure=dart._interceptors::JSArray */ { - lowered final self::CustomJSArray /* erasure=dart._interceptors::JSArray */ #this = _; +static extension-type-member synthetic method CustomTypedArray|constructor#_#new#tearOff(js_::JSTypedArray /* erasure=dart.typed_data.implementation::NativeTypedData */ _#wc2#formal) → self::CustomTypedArray /* erasure=dart.typed_data.implementation::NativeTypedData */ + return self::CustomTypedArray|constructor#(_#wc2#formal); +static extension-type-member method CustomJSArray|constructor#(wildcard js_::JSArray /* erasure=dart._interceptors::JSArray */ _#wc3#formal) → self::CustomJSArray /* erasure=dart._interceptors::JSArray */ { + lowered final self::CustomJSArray /* erasure=dart._interceptors::JSArray */ #this = _#wc3#formal; return #this; } -static extension-type-member synthetic method CustomJSArray|constructor#_#new#tearOff(js_::JSArray /* erasure=dart._interceptors::JSArray */ _) → self::CustomJSArray /* erasure=dart._interceptors::JSArray */ - return self::CustomJSArray|constructor#(_); +static extension-type-member synthetic method CustomJSArray|constructor#_#new#tearOff(js_::JSArray /* erasure=dart._interceptors::JSArray */ _#wc3#formal) → self::CustomJSArray /* erasure=dart._interceptors::JSArray */ + return self::CustomJSArray|constructor#(_#wc3#formal); static method test(js_::JSAny /* erasure=core::Object */ any, js_::JSAny? /* erasure=core::Object? */ nullableAny, core::Object obj, core::Object? nullableObj) → void { js_::NullableObjectUtilExtension|isA(any); js_::NullableObjectUtilExtension|isA(any); diff --git a/pkg/front_end/testcases/dartdevc/js_interop_transforms/isa.dart.strong.outline.expect b/pkg/front_end/testcases/dartdevc/js_interop_transforms/isa.dart.strong.outline.expect index 1d34fb029f0..60d1b079ab6 100644 --- a/pkg/front_end/testcases/dartdevc/js_interop_transforms/isa.dart.strong.outline.expect +++ b/pkg/front_end/testcases/dartdevc/js_interop_transforms/isa.dart.strong.outline.expect @@ -27,22 +27,22 @@ extension type CustomJSArray(js_::JSArray /* erasure=dart._interceptors::JSArray */ _) → self::CustomJSArray /* erasure=dart._interceptors::JSArray */ +static extension-type-member synthetic method CustomTypedArray|constructor#_#new#tearOff(js_::JSTypedArray /* erasure=dart.typed_data.implementation::NativeTypedData */ _#wc2#formal) → self::CustomTypedArray /* erasure=dart.typed_data.implementation::NativeTypedData */ + return self::CustomTypedArray|constructor#(_#wc2#formal); +static extension-type-member method CustomJSArray|constructor#(wildcard js_::JSArray /* erasure=dart._interceptors::JSArray */ _#wc3#formal) → self::CustomJSArray /* erasure=dart._interceptors::JSArray */ ; -static extension-type-member synthetic method CustomJSArray|constructor#_#new#tearOff(js_::JSArray /* erasure=dart._interceptors::JSArray */ _) → self::CustomJSArray /* erasure=dart._interceptors::JSArray */ - return self::CustomJSArray|constructor#(_); +static extension-type-member synthetic method CustomJSArray|constructor#_#new#tearOff(js_::JSArray /* erasure=dart._interceptors::JSArray */ _#wc3#formal) → self::CustomJSArray /* erasure=dart._interceptors::JSArray */ + return self::CustomJSArray|constructor#(_#wc3#formal); static method test(js_::JSAny /* erasure=core::Object */ any, js_::JSAny? /* erasure=core::Object? */ nullableAny, core::Object obj, core::Object? nullableObj) → void ; static method main() → void diff --git a/pkg/front_end/testcases/dartdevc/js_interop_transforms/isa.dart.strong.transformed.expect b/pkg/front_end/testcases/dartdevc/js_interop_transforms/isa.dart.strong.transformed.expect index 12d077a0d72..31143fcc438 100644 --- a/pkg/front_end/testcases/dartdevc/js_interop_transforms/isa.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/dartdevc/js_interop_transforms/isa.dart.strong.transformed.expect @@ -28,30 +28,30 @@ extension type CustomJSArray(js_::JSArray /* erasure=dart._interceptors::JSArray */ _) → self::CustomJSArray /* erasure=dart._interceptors::JSArray */ { - lowered final self::CustomJSArray /* erasure=dart._interceptors::JSArray */ #this = _; +static extension-type-member synthetic method CustomTypedArray|constructor#_#new#tearOff(js_::JSTypedArray /* erasure=dart.typed_data.implementation::NativeTypedData */ _#wc2#formal) → self::CustomTypedArray /* erasure=dart.typed_data.implementation::NativeTypedData */ + return self::CustomTypedArray|constructor#(_#wc2#formal); +static extension-type-member method CustomJSArray|constructor#(wildcard js_::JSArray /* erasure=dart._interceptors::JSArray */ _#wc3#formal) → self::CustomJSArray /* erasure=dart._interceptors::JSArray */ { + lowered final self::CustomJSArray /* erasure=dart._interceptors::JSArray */ #this = _#wc3#formal; return #this; } -static extension-type-member synthetic method CustomJSArray|constructor#_#new#tearOff(js_::JSArray /* erasure=dart._interceptors::JSArray */ _) → self::CustomJSArray /* erasure=dart._interceptors::JSArray */ - return self::CustomJSArray|constructor#(_); +static extension-type-member synthetic method CustomJSArray|constructor#_#new#tearOff(js_::JSArray /* erasure=dart._interceptors::JSArray */ _#wc3#formal) → self::CustomJSArray /* erasure=dart._interceptors::JSArray */ + return self::CustomJSArray|constructor#(_#wc3#formal); static method test(js_::JSAny /* erasure=core::Object */ any, js_::JSAny? /* erasure=core::Object? */ nullableAny, core::Object obj, core::Object? nullableObj) → void { js_::_isJSAny(any); js_::_isNullableJSAny(any); diff --git a/pkg/front_end/testcases/dot_shorthands/tearoff.dart.strong.expect b/pkg/front_end/testcases/dot_shorthands/tearoff.dart.strong.expect index 8def0d75d59..7bbdd70b697 100644 --- a/pkg/front_end/testcases/dot_shorthands/tearoff.dart.strong.expect +++ b/pkg/front_end/testcases/dot_shorthands/tearoff.dart.strong.expect @@ -29,12 +29,12 @@ extension type ET1(self::A1 _) implements self::A1 { constructor • = self::ET1|constructor#; constructor tearoff • = self::ET1|constructor#_#new#tearOff; } -static extension-type-member method ET1|constructor#(self::A1 _) → self::ET1 /* erasure=self::A1 */ { - lowered final self::ET1 /* erasure=self::A1 */ #this = _; +static extension-type-member method ET1|constructor#(wildcard self::A1 _#wc0#formal) → self::ET1 /* erasure=self::A1 */ { + lowered final self::ET1 /* erasure=self::A1 */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method ET1|constructor#_#new#tearOff(self::A1 _) → self::ET1 /* erasure=self::A1 */ - return self::ET1|constructor#(_); +static extension-type-member synthetic method ET1|constructor#_#new#tearOff(self::A1 _#wc0#formal) → self::ET1 /* erasure=self::A1 */ + return self::ET1|constructor#(_#wc0#formal); static method main() → void { core::Object o = #C4; core::print(new self::C1::•() =={self::C1::==}{(core::Object) → core::bool} #C2); diff --git a/pkg/front_end/testcases/dot_shorthands/tearoff.dart.strong.modular.expect b/pkg/front_end/testcases/dot_shorthands/tearoff.dart.strong.modular.expect index 8def0d75d59..7bbdd70b697 100644 --- a/pkg/front_end/testcases/dot_shorthands/tearoff.dart.strong.modular.expect +++ b/pkg/front_end/testcases/dot_shorthands/tearoff.dart.strong.modular.expect @@ -29,12 +29,12 @@ extension type ET1(self::A1 _) implements self::A1 { constructor • = self::ET1|constructor#; constructor tearoff • = self::ET1|constructor#_#new#tearOff; } -static extension-type-member method ET1|constructor#(self::A1 _) → self::ET1 /* erasure=self::A1 */ { - lowered final self::ET1 /* erasure=self::A1 */ #this = _; +static extension-type-member method ET1|constructor#(wildcard self::A1 _#wc0#formal) → self::ET1 /* erasure=self::A1 */ { + lowered final self::ET1 /* erasure=self::A1 */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method ET1|constructor#_#new#tearOff(self::A1 _) → self::ET1 /* erasure=self::A1 */ - return self::ET1|constructor#(_); +static extension-type-member synthetic method ET1|constructor#_#new#tearOff(self::A1 _#wc0#formal) → self::ET1 /* erasure=self::A1 */ + return self::ET1|constructor#(_#wc0#formal); static method main() → void { core::Object o = #C4; core::print(new self::C1::•() =={self::C1::==}{(core::Object) → core::bool} #C2); diff --git a/pkg/front_end/testcases/dot_shorthands/tearoff.dart.strong.outline.expect b/pkg/front_end/testcases/dot_shorthands/tearoff.dart.strong.outline.expect index 716a0894419..6571afdbd3b 100644 --- a/pkg/front_end/testcases/dot_shorthands/tearoff.dart.strong.outline.expect +++ b/pkg/front_end/testcases/dot_shorthands/tearoff.dart.strong.outline.expect @@ -26,10 +26,10 @@ extension type ET1(self::A1 _) implements self::A1 { constructor • = self::ET1|constructor#; constructor tearoff • = self::ET1|constructor#_#new#tearOff; } -static extension-type-member method ET1|constructor#(self::A1 _) → self::ET1 /* erasure=self::A1 */ +static extension-type-member method ET1|constructor#(wildcard self::A1 _#wc0#formal) → self::ET1 /* erasure=self::A1 */ ; -static extension-type-member synthetic method ET1|constructor#_#new#tearOff(self::A1 _) → self::ET1 /* erasure=self::A1 */ - return self::ET1|constructor#(_); +static extension-type-member synthetic method ET1|constructor#_#new#tearOff(self::A1 _#wc0#formal) → self::ET1 /* erasure=self::A1 */ + return self::ET1|constructor#(_#wc0#formal); static method main() → void ; diff --git a/pkg/front_end/testcases/dot_shorthands/tearoff.dart.strong.transformed.expect b/pkg/front_end/testcases/dot_shorthands/tearoff.dart.strong.transformed.expect index 8def0d75d59..7bbdd70b697 100644 --- a/pkg/front_end/testcases/dot_shorthands/tearoff.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/dot_shorthands/tearoff.dart.strong.transformed.expect @@ -29,12 +29,12 @@ extension type ET1(self::A1 _) implements self::A1 { constructor • = self::ET1|constructor#; constructor tearoff • = self::ET1|constructor#_#new#tearOff; } -static extension-type-member method ET1|constructor#(self::A1 _) → self::ET1 /* erasure=self::A1 */ { - lowered final self::ET1 /* erasure=self::A1 */ #this = _; +static extension-type-member method ET1|constructor#(wildcard self::A1 _#wc0#formal) → self::ET1 /* erasure=self::A1 */ { + lowered final self::ET1 /* erasure=self::A1 */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method ET1|constructor#_#new#tearOff(self::A1 _) → self::ET1 /* erasure=self::A1 */ - return self::ET1|constructor#(_); +static extension-type-member synthetic method ET1|constructor#_#new#tearOff(self::A1 _#wc0#formal) → self::ET1 /* erasure=self::A1 */ + return self::ET1|constructor#(_#wc0#formal); static method main() → void { core::Object o = #C4; core::print(new self::C1::•() =={self::C1::==}{(core::Object) → core::bool} #C2); diff --git a/pkg/front_end/testcases/extension_types/issue53610.dart.strong.expect b/pkg/front_end/testcases/extension_types/issue53610.dart.strong.expect index 875de16906d..a985b73aad8 100644 --- a/pkg/front_end/testcases/extension_types/issue53610.dart.strong.expect +++ b/pkg/front_end/testcases/extension_types/issue53610.dart.strong.expect @@ -6,12 +6,12 @@ extension type N(Null _) { constructor • = self::N|constructor#; constructor tearoff • = self::N|constructor#_#new#tearOff; } -static extension-type-member const method N|constructor#(Null _) → self::N% /* erasure=Null, declared=! */ { - lowered final self::N% /* erasure=Null, declared=! */ #this = _; +static extension-type-member const method N|constructor#(wildcard Null _#wc0#formal) → self::N% /* erasure=Null, declared=! */ { + lowered final self::N% /* erasure=Null, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method N|constructor#_#new#tearOff(Null _) → self::N% /* erasure=Null, declared=! */ - return self::N|constructor#(_); +static extension-type-member synthetic method N|constructor#_#new#tearOff(Null _#wc0#formal) → self::N% /* erasure=Null, declared=! */ + return self::N|constructor#(_#wc0#formal); static method main() → void { self::N% /* erasure=Null, declared=! */ n = self::N|constructor#(null); const has-declared-initializer self::N% /* erasure=Null, declared=! */ cn = #C1; diff --git a/pkg/front_end/testcases/extension_types/issue53610.dart.strong.modular.expect b/pkg/front_end/testcases/extension_types/issue53610.dart.strong.modular.expect index 875de16906d..a985b73aad8 100644 --- a/pkg/front_end/testcases/extension_types/issue53610.dart.strong.modular.expect +++ b/pkg/front_end/testcases/extension_types/issue53610.dart.strong.modular.expect @@ -6,12 +6,12 @@ extension type N(Null _) { constructor • = self::N|constructor#; constructor tearoff • = self::N|constructor#_#new#tearOff; } -static extension-type-member const method N|constructor#(Null _) → self::N% /* erasure=Null, declared=! */ { - lowered final self::N% /* erasure=Null, declared=! */ #this = _; +static extension-type-member const method N|constructor#(wildcard Null _#wc0#formal) → self::N% /* erasure=Null, declared=! */ { + lowered final self::N% /* erasure=Null, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method N|constructor#_#new#tearOff(Null _) → self::N% /* erasure=Null, declared=! */ - return self::N|constructor#(_); +static extension-type-member synthetic method N|constructor#_#new#tearOff(Null _#wc0#formal) → self::N% /* erasure=Null, declared=! */ + return self::N|constructor#(_#wc0#formal); static method main() → void { self::N% /* erasure=Null, declared=! */ n = self::N|constructor#(null); const has-declared-initializer self::N% /* erasure=Null, declared=! */ cn = #C1; diff --git a/pkg/front_end/testcases/extension_types/issue53610.dart.strong.outline.expect b/pkg/front_end/testcases/extension_types/issue53610.dart.strong.outline.expect index e47721fa8af..a4684973227 100644 --- a/pkg/front_end/testcases/extension_types/issue53610.dart.strong.outline.expect +++ b/pkg/front_end/testcases/extension_types/issue53610.dart.strong.outline.expect @@ -6,11 +6,11 @@ extension type N(Null _) { constructor • = self::N|constructor#; constructor tearoff • = self::N|constructor#_#new#tearOff; } -static extension-type-member const method N|constructor#(Null _) → self::N% /* erasure=Null, declared=! */ { - lowered final self::N% /* erasure=Null, declared=! */ #this = _; +static extension-type-member const method N|constructor#(wildcard Null _#wc0#formal) → self::N% /* erasure=Null, declared=! */ { + lowered final self::N% /* erasure=Null, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method N|constructor#_#new#tearOff(Null _) → self::N% /* erasure=Null, declared=! */ - return self::N|constructor#(_); +static extension-type-member synthetic method N|constructor#_#new#tearOff(Null _#wc0#formal) → self::N% /* erasure=Null, declared=! */ + return self::N|constructor#(_#wc0#formal); static method main() → void ; diff --git a/pkg/front_end/testcases/extension_types/issue53610.dart.strong.transformed.expect b/pkg/front_end/testcases/extension_types/issue53610.dart.strong.transformed.expect index 358d254f806..ed1bd6b33b0 100644 --- a/pkg/front_end/testcases/extension_types/issue53610.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/extension_types/issue53610.dart.strong.transformed.expect @@ -6,12 +6,12 @@ extension type N(Null _) { constructor • = self::N|constructor#; constructor tearoff • = self::N|constructor#_#new#tearOff; } -static extension-type-member const method N|constructor#(Null _) → self::N% /* erasure=Null, declared=! */ { - lowered final self::N% /* erasure=Null, declared=! */ #this = _; +static extension-type-member const method N|constructor#(wildcard Null _#wc0#formal) → self::N% /* erasure=Null, declared=! */ { + lowered final self::N% /* erasure=Null, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method N|constructor#_#new#tearOff(Null _) → self::N% /* erasure=Null, declared=! */ - return self::N|constructor#(_); +static extension-type-member synthetic method N|constructor#_#new#tearOff(Null _#wc0#formal) → self::N% /* erasure=Null, declared=! */ + return self::N|constructor#(_#wc0#formal); static method main() → void { self::N% /* erasure=Null, declared=! */ n = self::N|constructor#(null); const has-declared-initializer self::N% /* erasure=Null, declared=! */ cn = #C1; diff --git a/pkg/front_end/testcases/extension_types/issue53822.dart.strong.expect b/pkg/front_end/testcases/extension_types/issue53822.dart.strong.expect index dbd0f4da047..4c272047a3b 100644 --- a/pkg/front_end/testcases/extension_types/issue53822.dart.strong.expect +++ b/pkg/front_end/testcases/extension_types/issue53822.dart.strong.expect @@ -9,12 +9,12 @@ extension type ET(T% _) { constructor • = self::ET|constructor#; constructor tearoff • = self::ET|constructor#_#new#tearOff; } -static extension-type-member method ET|constructor#(self::ET|constructor#::T% _) → self::ET% /* erasure=self::ET|constructor#::T%, declared=! */ { - lowered final self::ET% /* erasure=self::ET|constructor#::T%, declared=! */ #this = _; +static extension-type-member method ET|constructor#(wildcard self::ET|constructor#::T% _#wc0#formal) → self::ET% /* erasure=self::ET|constructor#::T%, declared=! */ { + lowered final self::ET% /* erasure=self::ET|constructor#::T%, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method ET|constructor#_#new#tearOff(self::ET|constructor#_#new#tearOff::T% _) → self::ET% /* erasure=self::ET|constructor#_#new#tearOff::T%, declared=! */ - return self::ET|constructor#(_); +static extension-type-member synthetic method ET|constructor#_#new#tearOff(self::ET|constructor#_#new#tearOff::T% _#wc0#formal) → self::ET% /* erasure=self::ET|constructor#_#new#tearOff::T%, declared=! */ + return self::ET|constructor#(_#wc0#formal); static extension-type-member method ET|test(lowered final self::ET% /* erasure=self::ET|test::T%, declared=! */ #this) → void {} static extension-type-member method ET|get#test(lowered final self::ET% /* erasure=self::ET|get#test::T%, declared=! */ #this) → () → void return () → void => self::ET|test(#this); diff --git a/pkg/front_end/testcases/extension_types/issue53822.dart.strong.modular.expect b/pkg/front_end/testcases/extension_types/issue53822.dart.strong.modular.expect index dbd0f4da047..4c272047a3b 100644 --- a/pkg/front_end/testcases/extension_types/issue53822.dart.strong.modular.expect +++ b/pkg/front_end/testcases/extension_types/issue53822.dart.strong.modular.expect @@ -9,12 +9,12 @@ extension type ET(T% _) { constructor • = self::ET|constructor#; constructor tearoff • = self::ET|constructor#_#new#tearOff; } -static extension-type-member method ET|constructor#(self::ET|constructor#::T% _) → self::ET% /* erasure=self::ET|constructor#::T%, declared=! */ { - lowered final self::ET% /* erasure=self::ET|constructor#::T%, declared=! */ #this = _; +static extension-type-member method ET|constructor#(wildcard self::ET|constructor#::T% _#wc0#formal) → self::ET% /* erasure=self::ET|constructor#::T%, declared=! */ { + lowered final self::ET% /* erasure=self::ET|constructor#::T%, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method ET|constructor#_#new#tearOff(self::ET|constructor#_#new#tearOff::T% _) → self::ET% /* erasure=self::ET|constructor#_#new#tearOff::T%, declared=! */ - return self::ET|constructor#(_); +static extension-type-member synthetic method ET|constructor#_#new#tearOff(self::ET|constructor#_#new#tearOff::T% _#wc0#formal) → self::ET% /* erasure=self::ET|constructor#_#new#tearOff::T%, declared=! */ + return self::ET|constructor#(_#wc0#formal); static extension-type-member method ET|test(lowered final self::ET% /* erasure=self::ET|test::T%, declared=! */ #this) → void {} static extension-type-member method ET|get#test(lowered final self::ET% /* erasure=self::ET|get#test::T%, declared=! */ #this) → () → void return () → void => self::ET|test(#this); diff --git a/pkg/front_end/testcases/extension_types/issue53822.dart.strong.outline.expect b/pkg/front_end/testcases/extension_types/issue53822.dart.strong.outline.expect index ad0276c12df..5506d2455a8 100644 --- a/pkg/front_end/testcases/extension_types/issue53822.dart.strong.outline.expect +++ b/pkg/front_end/testcases/extension_types/issue53822.dart.strong.outline.expect @@ -9,10 +9,10 @@ extension type ET(T% _) { constructor • = self::ET|constructor#; constructor tearoff • = self::ET|constructor#_#new#tearOff; } -static extension-type-member method ET|constructor#(self::ET|constructor#::T% _) → self::ET% /* erasure=self::ET|constructor#::T%, declared=! */ +static extension-type-member method ET|constructor#(wildcard self::ET|constructor#::T% _#wc0#formal) → self::ET% /* erasure=self::ET|constructor#::T%, declared=! */ ; -static extension-type-member synthetic method ET|constructor#_#new#tearOff(self::ET|constructor#_#new#tearOff::T% _) → self::ET% /* erasure=self::ET|constructor#_#new#tearOff::T%, declared=! */ - return self::ET|constructor#(_); +static extension-type-member synthetic method ET|constructor#_#new#tearOff(self::ET|constructor#_#new#tearOff::T% _#wc0#formal) → self::ET% /* erasure=self::ET|constructor#_#new#tearOff::T%, declared=! */ + return self::ET|constructor#(_#wc0#formal); static extension-type-member method ET|test(lowered final self::ET% /* erasure=self::ET|test::T%, declared=! */ #this) → void ; static extension-type-member method ET|get#test(lowered final self::ET% /* erasure=self::ET|get#test::T%, declared=! */ #this) → () → void diff --git a/pkg/front_end/testcases/extension_types/issue53822.dart.strong.transformed.expect b/pkg/front_end/testcases/extension_types/issue53822.dart.strong.transformed.expect index dbd0f4da047..4c272047a3b 100644 --- a/pkg/front_end/testcases/extension_types/issue53822.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/extension_types/issue53822.dart.strong.transformed.expect @@ -9,12 +9,12 @@ extension type ET(T% _) { constructor • = self::ET|constructor#; constructor tearoff • = self::ET|constructor#_#new#tearOff; } -static extension-type-member method ET|constructor#(self::ET|constructor#::T% _) → self::ET% /* erasure=self::ET|constructor#::T%, declared=! */ { - lowered final self::ET% /* erasure=self::ET|constructor#::T%, declared=! */ #this = _; +static extension-type-member method ET|constructor#(wildcard self::ET|constructor#::T% _#wc0#formal) → self::ET% /* erasure=self::ET|constructor#::T%, declared=! */ { + lowered final self::ET% /* erasure=self::ET|constructor#::T%, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method ET|constructor#_#new#tearOff(self::ET|constructor#_#new#tearOff::T% _) → self::ET% /* erasure=self::ET|constructor#_#new#tearOff::T%, declared=! */ - return self::ET|constructor#(_); +static extension-type-member synthetic method ET|constructor#_#new#tearOff(self::ET|constructor#_#new#tearOff::T% _#wc0#formal) → self::ET% /* erasure=self::ET|constructor#_#new#tearOff::T%, declared=! */ + return self::ET|constructor#(_#wc0#formal); static extension-type-member method ET|test(lowered final self::ET% /* erasure=self::ET|test::T%, declared=! */ #this) → void {} static extension-type-member method ET|get#test(lowered final self::ET% /* erasure=self::ET|get#test::T%, declared=! */ #this) → () → void return () → void => self::ET|test(#this); diff --git a/pkg/front_end/testcases/extension_types/issue53936.dart.strong.expect b/pkg/front_end/testcases/extension_types/issue53936.dart.strong.expect index 776a834f747..944791de639 100644 --- a/pkg/front_end/testcases/extension_types/issue53936.dart.strong.expect +++ b/pkg/front_end/testcases/extension_types/issue53936.dart.strong.expect @@ -28,12 +28,12 @@ static extension-type-member const method E|constructor#cast(core::Object? v) → self::E% /* erasure=core::Object?, declared=! */ return self::E|constructor#cast(v); -static extension-type-member const method TypeOf|constructor#(self::TypeOf|constructor#::T% _) → self::TypeOf% /* erasure=self::TypeOf|constructor#::T%, declared=! */ { - lowered final self::TypeOf% /* erasure=self::TypeOf|constructor#::T%, declared=! */ #this = _; +static extension-type-member const method TypeOf|constructor#(wildcard self::TypeOf|constructor#::T% _#wc0#formal) → self::TypeOf% /* erasure=self::TypeOf|constructor#::T%, declared=! */ { + lowered final self::TypeOf% /* erasure=self::TypeOf|constructor#::T%, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method TypeOf|constructor#_#new#tearOff(self::TypeOf|constructor#_#new#tearOff::T% _) → self::TypeOf% /* erasure=self::TypeOf|constructor#_#new#tearOff::T%, declared=! */ - return self::TypeOf|constructor#(_); +static extension-type-member synthetic method TypeOf|constructor#_#new#tearOff(self::TypeOf|constructor#_#new#tearOff::T% _#wc0#formal) → self::TypeOf% /* erasure=self::TypeOf|constructor#_#new#tearOff::T%, declared=! */ + return self::TypeOf|constructor#(_#wc0#formal); static method main() → void { #C1; #C1; diff --git a/pkg/front_end/testcases/extension_types/issue53936.dart.strong.modular.expect b/pkg/front_end/testcases/extension_types/issue53936.dart.strong.modular.expect index 776a834f747..944791de639 100644 --- a/pkg/front_end/testcases/extension_types/issue53936.dart.strong.modular.expect +++ b/pkg/front_end/testcases/extension_types/issue53936.dart.strong.modular.expect @@ -28,12 +28,12 @@ static extension-type-member const method E|constructor#cast(core::Object? v) → self::E% /* erasure=core::Object?, declared=! */ return self::E|constructor#cast(v); -static extension-type-member const method TypeOf|constructor#(self::TypeOf|constructor#::T% _) → self::TypeOf% /* erasure=self::TypeOf|constructor#::T%, declared=! */ { - lowered final self::TypeOf% /* erasure=self::TypeOf|constructor#::T%, declared=! */ #this = _; +static extension-type-member const method TypeOf|constructor#(wildcard self::TypeOf|constructor#::T% _#wc0#formal) → self::TypeOf% /* erasure=self::TypeOf|constructor#::T%, declared=! */ { + lowered final self::TypeOf% /* erasure=self::TypeOf|constructor#::T%, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method TypeOf|constructor#_#new#tearOff(self::TypeOf|constructor#_#new#tearOff::T% _) → self::TypeOf% /* erasure=self::TypeOf|constructor#_#new#tearOff::T%, declared=! */ - return self::TypeOf|constructor#(_); +static extension-type-member synthetic method TypeOf|constructor#_#new#tearOff(self::TypeOf|constructor#_#new#tearOff::T% _#wc0#formal) → self::TypeOf% /* erasure=self::TypeOf|constructor#_#new#tearOff::T%, declared=! */ + return self::TypeOf|constructor#(_#wc0#formal); static method main() → void { #C1; #C1; diff --git a/pkg/front_end/testcases/extension_types/issue53936.dart.strong.outline.expect b/pkg/front_end/testcases/extension_types/issue53936.dart.strong.outline.expect index 24eb0765e39..5fd647ffda0 100644 --- a/pkg/front_end/testcases/extension_types/issue53936.dart.strong.outline.expect +++ b/pkg/front_end/testcases/extension_types/issue53936.dart.strong.outline.expect @@ -28,11 +28,11 @@ static extension-type-member const method E|constructor#cast(core::Object? v) → self::E% /* erasure=core::Object?, declared=! */ return self::E|constructor#cast(v); -static extension-type-member const method TypeOf|constructor#(self::TypeOf|constructor#::T% _) → self::TypeOf% /* erasure=self::TypeOf|constructor#::T%, declared=! */ { - lowered final self::TypeOf% /* erasure=self::TypeOf|constructor#::T%, declared=! */ #this = _; +static extension-type-member const method TypeOf|constructor#(wildcard self::TypeOf|constructor#::T% _#wc0#formal) → self::TypeOf% /* erasure=self::TypeOf|constructor#::T%, declared=! */ { + lowered final self::TypeOf% /* erasure=self::TypeOf|constructor#::T%, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method TypeOf|constructor#_#new#tearOff(self::TypeOf|constructor#_#new#tearOff::T% _) → self::TypeOf% /* erasure=self::TypeOf|constructor#_#new#tearOff::T%, declared=! */ - return self::TypeOf|constructor#(_); +static extension-type-member synthetic method TypeOf|constructor#_#new#tearOff(self::TypeOf|constructor#_#new#tearOff::T% _#wc0#formal) → self::TypeOf% /* erasure=self::TypeOf|constructor#_#new#tearOff::T%, declared=! */ + return self::TypeOf|constructor#(_#wc0#formal); static method main() → void ; diff --git a/pkg/front_end/testcases/extension_types/issue53936.dart.strong.transformed.expect b/pkg/front_end/testcases/extension_types/issue53936.dart.strong.transformed.expect index 776a834f747..944791de639 100644 --- a/pkg/front_end/testcases/extension_types/issue53936.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/extension_types/issue53936.dart.strong.transformed.expect @@ -28,12 +28,12 @@ static extension-type-member const method E|constructor#cast(core::Object? v) → self::E% /* erasure=core::Object?, declared=! */ return self::E|constructor#cast(v); -static extension-type-member const method TypeOf|constructor#(self::TypeOf|constructor#::T% _) → self::TypeOf% /* erasure=self::TypeOf|constructor#::T%, declared=! */ { - lowered final self::TypeOf% /* erasure=self::TypeOf|constructor#::T%, declared=! */ #this = _; +static extension-type-member const method TypeOf|constructor#(wildcard self::TypeOf|constructor#::T% _#wc0#formal) → self::TypeOf% /* erasure=self::TypeOf|constructor#::T%, declared=! */ { + lowered final self::TypeOf% /* erasure=self::TypeOf|constructor#::T%, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method TypeOf|constructor#_#new#tearOff(self::TypeOf|constructor#_#new#tearOff::T% _) → self::TypeOf% /* erasure=self::TypeOf|constructor#_#new#tearOff::T%, declared=! */ - return self::TypeOf|constructor#(_); +static extension-type-member synthetic method TypeOf|constructor#_#new#tearOff(self::TypeOf|constructor#_#new#tearOff::T% _#wc0#formal) → self::TypeOf% /* erasure=self::TypeOf|constructor#_#new#tearOff::T%, declared=! */ + return self::TypeOf|constructor#(_#wc0#formal); static method main() → void { #C1; #C1; diff --git a/pkg/front_end/testcases/extension_types/issue53957.dart.strong.expect b/pkg/front_end/testcases/extension_types/issue53957.dart.strong.expect index 2f648d91330..57fb9d58064 100644 --- a/pkg/front_end/testcases/extension_types/issue53957.dart.strong.expect +++ b/pkg/front_end/testcases/extension_types/issue53957.dart.strong.expect @@ -8,12 +8,12 @@ extension type Ext(core::Object? _) { constructor • = self::Ext|constructor#; constructor tearoff • = self::Ext|constructor#_#new#tearOff; } -static extension-type-member method Ext|constructor#(core::Object? _) → self::Ext% /* erasure=core::Object?, declared=! */ { - lowered final self::Ext% /* erasure=core::Object?, declared=! */ #this = _; +static extension-type-member method Ext|constructor#(wildcard core::Object? _#wc0#formal) → self::Ext% /* erasure=core::Object?, declared=! */ { + lowered final self::Ext% /* erasure=core::Object?, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method Ext|constructor#_#new#tearOff(core::Object? _) → self::Ext% /* erasure=core::Object?, declared=! */ - return self::Ext|constructor#(_); +static extension-type-member synthetic method Ext|constructor#_#new#tearOff(core::Object? _#wc0#formal) → self::Ext% /* erasure=core::Object?, declared=! */ + return self::Ext|constructor#(_#wc0#formal); static extension-type-member method Ext|get#value(lowered final self::Ext% /* erasure=core::Object?, declared=! */ #this) → core::int return 42; static method main() → void { diff --git a/pkg/front_end/testcases/extension_types/issue53957.dart.strong.modular.expect b/pkg/front_end/testcases/extension_types/issue53957.dart.strong.modular.expect index 2f648d91330..57fb9d58064 100644 --- a/pkg/front_end/testcases/extension_types/issue53957.dart.strong.modular.expect +++ b/pkg/front_end/testcases/extension_types/issue53957.dart.strong.modular.expect @@ -8,12 +8,12 @@ extension type Ext(core::Object? _) { constructor • = self::Ext|constructor#; constructor tearoff • = self::Ext|constructor#_#new#tearOff; } -static extension-type-member method Ext|constructor#(core::Object? _) → self::Ext% /* erasure=core::Object?, declared=! */ { - lowered final self::Ext% /* erasure=core::Object?, declared=! */ #this = _; +static extension-type-member method Ext|constructor#(wildcard core::Object? _#wc0#formal) → self::Ext% /* erasure=core::Object?, declared=! */ { + lowered final self::Ext% /* erasure=core::Object?, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method Ext|constructor#_#new#tearOff(core::Object? _) → self::Ext% /* erasure=core::Object?, declared=! */ - return self::Ext|constructor#(_); +static extension-type-member synthetic method Ext|constructor#_#new#tearOff(core::Object? _#wc0#formal) → self::Ext% /* erasure=core::Object?, declared=! */ + return self::Ext|constructor#(_#wc0#formal); static extension-type-member method Ext|get#value(lowered final self::Ext% /* erasure=core::Object?, declared=! */ #this) → core::int return 42; static method main() → void { diff --git a/pkg/front_end/testcases/extension_types/issue53957.dart.strong.outline.expect b/pkg/front_end/testcases/extension_types/issue53957.dart.strong.outline.expect index c373e4155dd..8767ef40421 100644 --- a/pkg/front_end/testcases/extension_types/issue53957.dart.strong.outline.expect +++ b/pkg/front_end/testcases/extension_types/issue53957.dart.strong.outline.expect @@ -8,10 +8,10 @@ extension type Ext(core::Object? _) { constructor • = self::Ext|constructor#; constructor tearoff • = self::Ext|constructor#_#new#tearOff; } -static extension-type-member method Ext|constructor#(core::Object? _) → self::Ext% /* erasure=core::Object?, declared=! */ +static extension-type-member method Ext|constructor#(wildcard core::Object? _#wc0#formal) → self::Ext% /* erasure=core::Object?, declared=! */ ; -static extension-type-member synthetic method Ext|constructor#_#new#tearOff(core::Object? _) → self::Ext% /* erasure=core::Object?, declared=! */ - return self::Ext|constructor#(_); +static extension-type-member synthetic method Ext|constructor#_#new#tearOff(core::Object? _#wc0#formal) → self::Ext% /* erasure=core::Object?, declared=! */ + return self::Ext|constructor#(_#wc0#formal); static extension-type-member method Ext|get#value(lowered final self::Ext% /* erasure=core::Object?, declared=! */ #this) → core::int ; static method main() → void diff --git a/pkg/front_end/testcases/extension_types/issue53957.dart.strong.transformed.expect b/pkg/front_end/testcases/extension_types/issue53957.dart.strong.transformed.expect index 2f648d91330..57fb9d58064 100644 --- a/pkg/front_end/testcases/extension_types/issue53957.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/extension_types/issue53957.dart.strong.transformed.expect @@ -8,12 +8,12 @@ extension type Ext(core::Object? _) { constructor • = self::Ext|constructor#; constructor tearoff • = self::Ext|constructor#_#new#tearOff; } -static extension-type-member method Ext|constructor#(core::Object? _) → self::Ext% /* erasure=core::Object?, declared=! */ { - lowered final self::Ext% /* erasure=core::Object?, declared=! */ #this = _; +static extension-type-member method Ext|constructor#(wildcard core::Object? _#wc0#formal) → self::Ext% /* erasure=core::Object?, declared=! */ { + lowered final self::Ext% /* erasure=core::Object?, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method Ext|constructor#_#new#tearOff(core::Object? _) → self::Ext% /* erasure=core::Object?, declared=! */ - return self::Ext|constructor#(_); +static extension-type-member synthetic method Ext|constructor#_#new#tearOff(core::Object? _#wc0#formal) → self::Ext% /* erasure=core::Object?, declared=! */ + return self::Ext|constructor#(_#wc0#formal); static extension-type-member method Ext|get#value(lowered final self::Ext% /* erasure=core::Object?, declared=! */ #this) → core::int return 42; static method main() → void { diff --git a/pkg/front_end/testcases/extension_types/issue54357.dart.strong.expect b/pkg/front_end/testcases/extension_types/issue54357.dart.strong.expect index aaf579e2a1a..b3c89cca9d7 100644 --- a/pkg/front_end/testcases/extension_types/issue54357.dart.strong.expect +++ b/pkg/front_end/testcases/extension_types/issue54357.dart.strong.expect @@ -30,12 +30,12 @@ static const field core::Map m3s4 = #C13; static const field core::Map ms43 = #C14; static const field core::Map ms3s4 = #C13; -static extension-type-member const method ExInt|constructor#(core::int _) → self::ExInt /* erasure=core::int */ { - lowered final self::ExInt /* erasure=core::int */ #this = _; +static extension-type-member const method ExInt|constructor#(wildcard core::int _#wc0#formal) → self::ExInt /* erasure=core::int */ { + lowered final self::ExInt /* erasure=core::int */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method ExInt|constructor#_#new#tearOff(core::int _) → self::ExInt /* erasure=core::int */ - return self::ExInt|constructor#(_); +static extension-type-member synthetic method ExInt|constructor#_#new#tearOff(core::int _#wc0#formal) → self::ExInt /* erasure=core::int */ + return self::ExInt|constructor#(_#wc0#formal); constants { #C1 = 3 diff --git a/pkg/front_end/testcases/extension_types/issue54357.dart.strong.modular.expect b/pkg/front_end/testcases/extension_types/issue54357.dart.strong.modular.expect index aaf579e2a1a..b3c89cca9d7 100644 --- a/pkg/front_end/testcases/extension_types/issue54357.dart.strong.modular.expect +++ b/pkg/front_end/testcases/extension_types/issue54357.dart.strong.modular.expect @@ -30,12 +30,12 @@ static const field core::Map m3s4 = #C13; static const field core::Map ms43 = #C14; static const field core::Map ms3s4 = #C13; -static extension-type-member const method ExInt|constructor#(core::int _) → self::ExInt /* erasure=core::int */ { - lowered final self::ExInt /* erasure=core::int */ #this = _; +static extension-type-member const method ExInt|constructor#(wildcard core::int _#wc0#formal) → self::ExInt /* erasure=core::int */ { + lowered final self::ExInt /* erasure=core::int */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method ExInt|constructor#_#new#tearOff(core::int _) → self::ExInt /* erasure=core::int */ - return self::ExInt|constructor#(_); +static extension-type-member synthetic method ExInt|constructor#_#new#tearOff(core::int _#wc0#formal) → self::ExInt /* erasure=core::int */ + return self::ExInt|constructor#(_#wc0#formal); constants { #C1 = 3 diff --git a/pkg/front_end/testcases/extension_types/issue54357.dart.strong.outline.expect b/pkg/front_end/testcases/extension_types/issue54357.dart.strong.outline.expect index b82a91ad9f5..446649d7d90 100644 --- a/pkg/front_end/testcases/extension_types/issue54357.dart.strong.outline.expect +++ b/pkg/front_end/testcases/extension_types/issue54357.dart.strong.outline.expect @@ -30,12 +30,12 @@ static const field core::Map m3s4 = const {self::ex3: self::ex3} + self::m4; static const field core::Map ms43 = self::m4 + const {self::ex3: self::ex3}; static const field core::Map ms3s4 = self::m3 + self::m4; -static extension-type-member const method ExInt|constructor#(core::int _) → self::ExInt /* erasure=core::int */ { - lowered final self::ExInt /* erasure=core::int */ #this = _; +static extension-type-member const method ExInt|constructor#(wildcard core::int _#wc0#formal) → self::ExInt /* erasure=core::int */ { + lowered final self::ExInt /* erasure=core::int */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method ExInt|constructor#_#new#tearOff(core::int _) → self::ExInt /* erasure=core::int */ - return self::ExInt|constructor#(_); +static extension-type-member synthetic method ExInt|constructor#_#new#tearOff(core::int _#wc0#formal) → self::ExInt /* erasure=core::int */ + return self::ExInt|constructor#(_#wc0#formal); Extra constant evaluation status: diff --git a/pkg/front_end/testcases/extension_types/issue54357.dart.strong.transformed.expect b/pkg/front_end/testcases/extension_types/issue54357.dart.strong.transformed.expect index aaf579e2a1a..b3c89cca9d7 100644 --- a/pkg/front_end/testcases/extension_types/issue54357.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/extension_types/issue54357.dart.strong.transformed.expect @@ -30,12 +30,12 @@ static const field core::Map m3s4 = #C13; static const field core::Map ms43 = #C14; static const field core::Map ms3s4 = #C13; -static extension-type-member const method ExInt|constructor#(core::int _) → self::ExInt /* erasure=core::int */ { - lowered final self::ExInt /* erasure=core::int */ #this = _; +static extension-type-member const method ExInt|constructor#(wildcard core::int _#wc0#formal) → self::ExInt /* erasure=core::int */ { + lowered final self::ExInt /* erasure=core::int */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method ExInt|constructor#_#new#tearOff(core::int _) → self::ExInt /* erasure=core::int */ - return self::ExInt|constructor#(_); +static extension-type-member synthetic method ExInt|constructor#_#new#tearOff(core::int _#wc0#formal) → self::ExInt /* erasure=core::int */ + return self::ExInt|constructor#(_#wc0#formal); constants { #C1 = 3 diff --git a/pkg/front_end/testcases/extension_types/issue54602.dart.strong.expect b/pkg/front_end/testcases/extension_types/issue54602.dart.strong.expect index 417604d82ce..78198662362 100644 --- a/pkg/front_end/testcases/extension_types/issue54602.dart.strong.expect +++ b/pkg/front_end/testcases/extension_types/issue54602.dart.strong.expect @@ -32,21 +32,21 @@ extension type E3(core::Object? _) → self::E1% /* erasure=core::Object?, declared=! */ { - lowered final self::E1% /* erasure=core::Object?, declared=! */ #this = _; +static extension-type-member method E1|constructor#(wildcard core::Object? _#wc0#formal) → self::E1% /* erasure=core::Object?, declared=! */ { + lowered final self::E1% /* erasure=core::Object?, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method E1|constructor#_#new#tearOff(core::Object? _) → self::E1% /* erasure=core::Object?, declared=! */ - return self::E1|constructor#(_); -static extension-type-member method E2|constructor#(core::Object? _) → self::E2% /* erasure=core::Object?, declared=! */ { - lowered final self::E2% /* erasure=core::Object?, declared=! */ #this = _; +static extension-type-member synthetic method E1|constructor#_#new#tearOff(core::Object? _#wc0#formal) → self::E1% /* erasure=core::Object?, declared=! */ + return self::E1|constructor#(_#wc0#formal); +static extension-type-member method E2|constructor#(wildcard core::Object? _#wc1#formal) → self::E2% /* erasure=core::Object?, declared=! */ { + lowered final self::E2% /* erasure=core::Object?, declared=! */ #this = _#wc1#formal; return #this; } -static extension-type-member synthetic method E2|constructor#_#new#tearOff(core::Object? _) → self::E2% /* erasure=core::Object?, declared=! */ - return self::E2|constructor#(_); -static extension-type-member method E3|constructor#(core::Object? _) → self::E3% /* erasure=core::Object?, declared=! */ { - lowered final self::E3% /* erasure=core::Object?, declared=! */ #this = _; +static extension-type-member synthetic method E2|constructor#_#new#tearOff(core::Object? _#wc1#formal) → self::E2% /* erasure=core::Object?, declared=! */ + return self::E2|constructor#(_#wc1#formal); +static extension-type-member method E3|constructor#(wildcard core::Object? _#wc2#formal) → self::E3% /* erasure=core::Object?, declared=! */ { + lowered final self::E3% /* erasure=core::Object?, declared=! */ #this = _#wc2#formal; return #this; } -static extension-type-member synthetic method E3|constructor#_#new#tearOff(core::Object? _) → self::E3% /* erasure=core::Object?, declared=! */ - return self::E3|constructor#(_); +static extension-type-member synthetic method E3|constructor#_#new#tearOff(core::Object? _#wc2#formal) → self::E3% /* erasure=core::Object?, declared=! */ + return self::E3|constructor#(_#wc2#formal); diff --git a/pkg/front_end/testcases/extension_types/issue54602.dart.strong.modular.expect b/pkg/front_end/testcases/extension_types/issue54602.dart.strong.modular.expect index 417604d82ce..78198662362 100644 --- a/pkg/front_end/testcases/extension_types/issue54602.dart.strong.modular.expect +++ b/pkg/front_end/testcases/extension_types/issue54602.dart.strong.modular.expect @@ -32,21 +32,21 @@ extension type E3(core::Object? _) → self::E1% /* erasure=core::Object?, declared=! */ { - lowered final self::E1% /* erasure=core::Object?, declared=! */ #this = _; +static extension-type-member method E1|constructor#(wildcard core::Object? _#wc0#formal) → self::E1% /* erasure=core::Object?, declared=! */ { + lowered final self::E1% /* erasure=core::Object?, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method E1|constructor#_#new#tearOff(core::Object? _) → self::E1% /* erasure=core::Object?, declared=! */ - return self::E1|constructor#(_); -static extension-type-member method E2|constructor#(core::Object? _) → self::E2% /* erasure=core::Object?, declared=! */ { - lowered final self::E2% /* erasure=core::Object?, declared=! */ #this = _; +static extension-type-member synthetic method E1|constructor#_#new#tearOff(core::Object? _#wc0#formal) → self::E1% /* erasure=core::Object?, declared=! */ + return self::E1|constructor#(_#wc0#formal); +static extension-type-member method E2|constructor#(wildcard core::Object? _#wc1#formal) → self::E2% /* erasure=core::Object?, declared=! */ { + lowered final self::E2% /* erasure=core::Object?, declared=! */ #this = _#wc1#formal; return #this; } -static extension-type-member synthetic method E2|constructor#_#new#tearOff(core::Object? _) → self::E2% /* erasure=core::Object?, declared=! */ - return self::E2|constructor#(_); -static extension-type-member method E3|constructor#(core::Object? _) → self::E3% /* erasure=core::Object?, declared=! */ { - lowered final self::E3% /* erasure=core::Object?, declared=! */ #this = _; +static extension-type-member synthetic method E2|constructor#_#new#tearOff(core::Object? _#wc1#formal) → self::E2% /* erasure=core::Object?, declared=! */ + return self::E2|constructor#(_#wc1#formal); +static extension-type-member method E3|constructor#(wildcard core::Object? _#wc2#formal) → self::E3% /* erasure=core::Object?, declared=! */ { + lowered final self::E3% /* erasure=core::Object?, declared=! */ #this = _#wc2#formal; return #this; } -static extension-type-member synthetic method E3|constructor#_#new#tearOff(core::Object? _) → self::E3% /* erasure=core::Object?, declared=! */ - return self::E3|constructor#(_); +static extension-type-member synthetic method E3|constructor#_#new#tearOff(core::Object? _#wc2#formal) → self::E3% /* erasure=core::Object?, declared=! */ + return self::E3|constructor#(_#wc2#formal); diff --git a/pkg/front_end/testcases/extension_types/issue54602.dart.strong.outline.expect b/pkg/front_end/testcases/extension_types/issue54602.dart.strong.outline.expect index be276ce3bb3..38c0b78403a 100644 --- a/pkg/front_end/testcases/extension_types/issue54602.dart.strong.outline.expect +++ b/pkg/front_end/testcases/extension_types/issue54602.dart.strong.outline.expect @@ -32,15 +32,15 @@ extension type E3(core::Object? _) → self::E1% /* erasure=core::Object?, declared=! */ +static extension-type-member method E1|constructor#(wildcard core::Object? _#wc0#formal) → self::E1% /* erasure=core::Object?, declared=! */ ; -static extension-type-member synthetic method E1|constructor#_#new#tearOff(core::Object? _) → self::E1% /* erasure=core::Object?, declared=! */ - return self::E1|constructor#(_); -static extension-type-member method E2|constructor#(core::Object? _) → self::E2% /* erasure=core::Object?, declared=! */ +static extension-type-member synthetic method E1|constructor#_#new#tearOff(core::Object? _#wc0#formal) → self::E1% /* erasure=core::Object?, declared=! */ + return self::E1|constructor#(_#wc0#formal); +static extension-type-member method E2|constructor#(wildcard core::Object? _#wc1#formal) → self::E2% /* erasure=core::Object?, declared=! */ ; -static extension-type-member synthetic method E2|constructor#_#new#tearOff(core::Object? _) → self::E2% /* erasure=core::Object?, declared=! */ - return self::E2|constructor#(_); -static extension-type-member method E3|constructor#(core::Object? _) → self::E3% /* erasure=core::Object?, declared=! */ +static extension-type-member synthetic method E2|constructor#_#new#tearOff(core::Object? _#wc1#formal) → self::E2% /* erasure=core::Object?, declared=! */ + return self::E2|constructor#(_#wc1#formal); +static extension-type-member method E3|constructor#(wildcard core::Object? _#wc2#formal) → self::E3% /* erasure=core::Object?, declared=! */ ; -static extension-type-member synthetic method E3|constructor#_#new#tearOff(core::Object? _) → self::E3% /* erasure=core::Object?, declared=! */ - return self::E3|constructor#(_); +static extension-type-member synthetic method E3|constructor#_#new#tearOff(core::Object? _#wc2#formal) → self::E3% /* erasure=core::Object?, declared=! */ + return self::E3|constructor#(_#wc2#formal); diff --git a/pkg/front_end/testcases/extension_types/issue54602.dart.strong.transformed.expect b/pkg/front_end/testcases/extension_types/issue54602.dart.strong.transformed.expect index 417604d82ce..78198662362 100644 --- a/pkg/front_end/testcases/extension_types/issue54602.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/extension_types/issue54602.dart.strong.transformed.expect @@ -32,21 +32,21 @@ extension type E3(core::Object? _) → self::E1% /* erasure=core::Object?, declared=! */ { - lowered final self::E1% /* erasure=core::Object?, declared=! */ #this = _; +static extension-type-member method E1|constructor#(wildcard core::Object? _#wc0#formal) → self::E1% /* erasure=core::Object?, declared=! */ { + lowered final self::E1% /* erasure=core::Object?, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method E1|constructor#_#new#tearOff(core::Object? _) → self::E1% /* erasure=core::Object?, declared=! */ - return self::E1|constructor#(_); -static extension-type-member method E2|constructor#(core::Object? _) → self::E2% /* erasure=core::Object?, declared=! */ { - lowered final self::E2% /* erasure=core::Object?, declared=! */ #this = _; +static extension-type-member synthetic method E1|constructor#_#new#tearOff(core::Object? _#wc0#formal) → self::E1% /* erasure=core::Object?, declared=! */ + return self::E1|constructor#(_#wc0#formal); +static extension-type-member method E2|constructor#(wildcard core::Object? _#wc1#formal) → self::E2% /* erasure=core::Object?, declared=! */ { + lowered final self::E2% /* erasure=core::Object?, declared=! */ #this = _#wc1#formal; return #this; } -static extension-type-member synthetic method E2|constructor#_#new#tearOff(core::Object? _) → self::E2% /* erasure=core::Object?, declared=! */ - return self::E2|constructor#(_); -static extension-type-member method E3|constructor#(core::Object? _) → self::E3% /* erasure=core::Object?, declared=! */ { - lowered final self::E3% /* erasure=core::Object?, declared=! */ #this = _; +static extension-type-member synthetic method E2|constructor#_#new#tearOff(core::Object? _#wc1#formal) → self::E2% /* erasure=core::Object?, declared=! */ + return self::E2|constructor#(_#wc1#formal); +static extension-type-member method E3|constructor#(wildcard core::Object? _#wc2#formal) → self::E3% /* erasure=core::Object?, declared=! */ { + lowered final self::E3% /* erasure=core::Object?, declared=! */ #this = _#wc2#formal; return #this; } -static extension-type-member synthetic method E3|constructor#_#new#tearOff(core::Object? _) → self::E3% /* erasure=core::Object?, declared=! */ - return self::E3|constructor#(_); +static extension-type-member synthetic method E3|constructor#_#new#tearOff(core::Object? _#wc2#formal) → self::E3% /* erasure=core::Object?, declared=! */ + return self::E3|constructor#(_#wc2#formal); diff --git a/pkg/front_end/testcases/extension_types/issue54625.dart.strong.expect b/pkg/front_end/testcases/extension_types/issue54625.dart.strong.expect index 2e8a6a6b4e9..84a8df355da 100644 --- a/pkg/front_end/testcases/extension_types/issue54625.dart.strong.expect +++ b/pkg/front_end/testcases/extension_types/issue54625.dart.strong.expect @@ -22,12 +22,12 @@ static method cfeAwait */>( core::int? v3 = v1; v1 = v3{core::int}; } -static extension-type-member method F|constructor#(asy::Future _) → self::F /* erasure=asy::Future */ { - lowered final self::F /* erasure=asy::Future */ #this = _; +static extension-type-member method F|constructor#(wildcard asy::Future _#wc0#formal) → self::F /* erasure=asy::Future */ { + lowered final self::F /* erasure=asy::Future */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method F|constructor#_#new#tearOff(asy::Future _) → self::F /* erasure=asy::Future */ - return self::F|constructor#(_); +static extension-type-member synthetic method F|constructor#_#new#tearOff(asy::Future _#wc0#formal) → self::F /* erasure=asy::Future */ + return self::F|constructor#(_#wc0#formal); static method main() → void { self::cfeAwait */>(self::F|constructor#(asy::Future::value(1))); } diff --git a/pkg/front_end/testcases/extension_types/issue54625.dart.strong.modular.expect b/pkg/front_end/testcases/extension_types/issue54625.dart.strong.modular.expect index 2e8a6a6b4e9..84a8df355da 100644 --- a/pkg/front_end/testcases/extension_types/issue54625.dart.strong.modular.expect +++ b/pkg/front_end/testcases/extension_types/issue54625.dart.strong.modular.expect @@ -22,12 +22,12 @@ static method cfeAwait */>( core::int? v3 = v1; v1 = v3{core::int}; } -static extension-type-member method F|constructor#(asy::Future _) → self::F /* erasure=asy::Future */ { - lowered final self::F /* erasure=asy::Future */ #this = _; +static extension-type-member method F|constructor#(wildcard asy::Future _#wc0#formal) → self::F /* erasure=asy::Future */ { + lowered final self::F /* erasure=asy::Future */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method F|constructor#_#new#tearOff(asy::Future _) → self::F /* erasure=asy::Future */ - return self::F|constructor#(_); +static extension-type-member synthetic method F|constructor#_#new#tearOff(asy::Future _#wc0#formal) → self::F /* erasure=asy::Future */ + return self::F|constructor#(_#wc0#formal); static method main() → void { self::cfeAwait */>(self::F|constructor#(asy::Future::value(1))); } diff --git a/pkg/front_end/testcases/extension_types/issue54625.dart.strong.outline.expect b/pkg/front_end/testcases/extension_types/issue54625.dart.strong.outline.expect index db7e0dfb7d2..264b2358bfa 100644 --- a/pkg/front_end/testcases/extension_types/issue54625.dart.strong.outline.expect +++ b/pkg/front_end/testcases/extension_types/issue54625.dart.strong.outline.expect @@ -15,10 +15,10 @@ extension type F(asy::Future _) implements asy::Future { } static method cfeAwait */>(self::cfeAwait::XF xf) → void async ; -static extension-type-member method F|constructor#(asy::Future _) → self::F /* erasure=asy::Future */ +static extension-type-member method F|constructor#(wildcard asy::Future _#wc0#formal) → self::F /* erasure=asy::Future */ ; -static extension-type-member synthetic method F|constructor#_#new#tearOff(asy::Future _) → self::F /* erasure=asy::Future */ - return self::F|constructor#(_); +static extension-type-member synthetic method F|constructor#_#new#tearOff(asy::Future _#wc0#formal) → self::F /* erasure=asy::Future */ + return self::F|constructor#(_#wc0#formal); static method main() → void ; static extension-member method Est|st(lowered final self::Est|st::T% #this) → void diff --git a/pkg/front_end/testcases/extension_types/issue54625.dart.strong.transformed.expect b/pkg/front_end/testcases/extension_types/issue54625.dart.strong.transformed.expect index 2e8a6a6b4e9..84a8df355da 100644 --- a/pkg/front_end/testcases/extension_types/issue54625.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/extension_types/issue54625.dart.strong.transformed.expect @@ -22,12 +22,12 @@ static method cfeAwait */>( core::int? v3 = v1; v1 = v3{core::int}; } -static extension-type-member method F|constructor#(asy::Future _) → self::F /* erasure=asy::Future */ { - lowered final self::F /* erasure=asy::Future */ #this = _; +static extension-type-member method F|constructor#(wildcard asy::Future _#wc0#formal) → self::F /* erasure=asy::Future */ { + lowered final self::F /* erasure=asy::Future */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method F|constructor#_#new#tearOff(asy::Future _) → self::F /* erasure=asy::Future */ - return self::F|constructor#(_); +static extension-type-member synthetic method F|constructor#_#new#tearOff(asy::Future _#wc0#formal) → self::F /* erasure=asy::Future */ + return self::F|constructor#(_#wc0#formal); static method main() → void { self::cfeAwait */>(self::F|constructor#(asy::Future::value(1))); } diff --git a/pkg/front_end/testcases/extension_types/issue54649.dart.strong.expect b/pkg/front_end/testcases/extension_types/issue54649.dart.strong.expect index 23088b2dec5..a3aebbbd912 100644 --- a/pkg/front_end/testcases/extension_types/issue54649.dart.strong.expect +++ b/pkg/front_end/testcases/extension_types/issue54649.dart.strong.expect @@ -48,18 +48,18 @@ extension type F(asy::Future _) implements asy::Future { constructor • = self::F|constructor#; constructor tearoff • = self::F|constructor#_#new#tearOff; } -static extension-type-member method N|constructor#(asy::Future _) → self::N% /* erasure=asy::Future, declared=! */ { - lowered final self::N% /* erasure=asy::Future, declared=! */ #this = _; +static extension-type-member method N|constructor#(wildcard asy::Future _#wc0#formal) → self::N% /* erasure=asy::Future, declared=! */ { + lowered final self::N% /* erasure=asy::Future, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method N|constructor#_#new#tearOff(asy::Future _) → self::N% /* erasure=asy::Future, declared=! */ - return self::N|constructor#(_); -static extension-type-member method F|constructor#(asy::Future _) → self::F /* erasure=asy::Future */ { - lowered final self::F /* erasure=asy::Future */ #this = _; +static extension-type-member synthetic method N|constructor#_#new#tearOff(asy::Future _#wc0#formal) → self::N% /* erasure=asy::Future, declared=! */ + return self::N|constructor#(_#wc0#formal); +static extension-type-member method F|constructor#(wildcard asy::Future _#wc1#formal) → self::F /* erasure=asy::Future */ { + lowered final self::F /* erasure=asy::Future */ #this = _#wc1#formal; return #this; } -static extension-type-member synthetic method F|constructor#_#new#tearOff(asy::Future _) → self::F /* erasure=asy::Future */ - return self::F|constructor#(_); +static extension-type-member synthetic method F|constructor#_#new#tearOff(asy::Future _#wc1#formal) → self::F /* erasure=asy::Future */ + return self::F|constructor#(_#wc1#formal); static method test, declared=! */, XF extends self::F /* erasure=asy::Future */>(self::N% /* erasure=asy::Future, declared=! */ n, self::F /* erasure=asy::Future */ f, self::test::X% x, self::test::XN% xn, self::test::XF xf, self::N? /* erasure=asy::Future? */ nq, self::F? /* erasure=asy::Future? */ fq, self::test::XN? xnq, self::test::XF? xfq) → void async /* emittedValueType= void */ { await invalid-expression "pkg/front_end/testcases/extension_types/issue54649.dart:10:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'. await n; // Error. diff --git a/pkg/front_end/testcases/extension_types/issue54649.dart.strong.modular.expect b/pkg/front_end/testcases/extension_types/issue54649.dart.strong.modular.expect index 23088b2dec5..a3aebbbd912 100644 --- a/pkg/front_end/testcases/extension_types/issue54649.dart.strong.modular.expect +++ b/pkg/front_end/testcases/extension_types/issue54649.dart.strong.modular.expect @@ -48,18 +48,18 @@ extension type F(asy::Future _) implements asy::Future { constructor • = self::F|constructor#; constructor tearoff • = self::F|constructor#_#new#tearOff; } -static extension-type-member method N|constructor#(asy::Future _) → self::N% /* erasure=asy::Future, declared=! */ { - lowered final self::N% /* erasure=asy::Future, declared=! */ #this = _; +static extension-type-member method N|constructor#(wildcard asy::Future _#wc0#formal) → self::N% /* erasure=asy::Future, declared=! */ { + lowered final self::N% /* erasure=asy::Future, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method N|constructor#_#new#tearOff(asy::Future _) → self::N% /* erasure=asy::Future, declared=! */ - return self::N|constructor#(_); -static extension-type-member method F|constructor#(asy::Future _) → self::F /* erasure=asy::Future */ { - lowered final self::F /* erasure=asy::Future */ #this = _; +static extension-type-member synthetic method N|constructor#_#new#tearOff(asy::Future _#wc0#formal) → self::N% /* erasure=asy::Future, declared=! */ + return self::N|constructor#(_#wc0#formal); +static extension-type-member method F|constructor#(wildcard asy::Future _#wc1#formal) → self::F /* erasure=asy::Future */ { + lowered final self::F /* erasure=asy::Future */ #this = _#wc1#formal; return #this; } -static extension-type-member synthetic method F|constructor#_#new#tearOff(asy::Future _) → self::F /* erasure=asy::Future */ - return self::F|constructor#(_); +static extension-type-member synthetic method F|constructor#_#new#tearOff(asy::Future _#wc1#formal) → self::F /* erasure=asy::Future */ + return self::F|constructor#(_#wc1#formal); static method test, declared=! */, XF extends self::F /* erasure=asy::Future */>(self::N% /* erasure=asy::Future, declared=! */ n, self::F /* erasure=asy::Future */ f, self::test::X% x, self::test::XN% xn, self::test::XF xf, self::N? /* erasure=asy::Future? */ nq, self::F? /* erasure=asy::Future? */ fq, self::test::XN? xnq, self::test::XF? xfq) → void async /* emittedValueType= void */ { await invalid-expression "pkg/front_end/testcases/extension_types/issue54649.dart:10:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'. await n; // Error. diff --git a/pkg/front_end/testcases/extension_types/issue54649.dart.strong.outline.expect b/pkg/front_end/testcases/extension_types/issue54649.dart.strong.outline.expect index d0d1f72811c..19bcee7230a 100644 --- a/pkg/front_end/testcases/extension_types/issue54649.dart.strong.outline.expect +++ b/pkg/front_end/testcases/extension_types/issue54649.dart.strong.outline.expect @@ -13,13 +13,13 @@ extension type F(asy::Future _) implements asy::Future { constructor • = self::F|constructor#; constructor tearoff • = self::F|constructor#_#new#tearOff; } -static extension-type-member method N|constructor#(asy::Future _) → self::N% /* erasure=asy::Future, declared=! */ +static extension-type-member method N|constructor#(wildcard asy::Future _#wc0#formal) → self::N% /* erasure=asy::Future, declared=! */ ; -static extension-type-member synthetic method N|constructor#_#new#tearOff(asy::Future _) → self::N% /* erasure=asy::Future, declared=! */ - return self::N|constructor#(_); -static extension-type-member method F|constructor#(asy::Future _) → self::F /* erasure=asy::Future */ +static extension-type-member synthetic method N|constructor#_#new#tearOff(asy::Future _#wc0#formal) → self::N% /* erasure=asy::Future, declared=! */ + return self::N|constructor#(_#wc0#formal); +static extension-type-member method F|constructor#(wildcard asy::Future _#wc1#formal) → self::F /* erasure=asy::Future */ ; -static extension-type-member synthetic method F|constructor#_#new#tearOff(asy::Future _) → self::F /* erasure=asy::Future */ - return self::F|constructor#(_); +static extension-type-member synthetic method F|constructor#_#new#tearOff(asy::Future _#wc1#formal) → self::F /* erasure=asy::Future */ + return self::F|constructor#(_#wc1#formal); static method test, declared=! */, XF extends self::F /* erasure=asy::Future */>(self::N% /* erasure=asy::Future, declared=! */ n, self::F /* erasure=asy::Future */ f, self::test::X% x, self::test::XN% xn, self::test::XF xf, self::N? /* erasure=asy::Future? */ nq, self::F? /* erasure=asy::Future? */ fq, self::test::XN? xnq, self::test::XF? xfq) → void async ; diff --git a/pkg/front_end/testcases/extension_types/issue54649.dart.strong.transformed.expect b/pkg/front_end/testcases/extension_types/issue54649.dart.strong.transformed.expect index 23088b2dec5..a3aebbbd912 100644 --- a/pkg/front_end/testcases/extension_types/issue54649.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/extension_types/issue54649.dart.strong.transformed.expect @@ -48,18 +48,18 @@ extension type F(asy::Future _) implements asy::Future { constructor • = self::F|constructor#; constructor tearoff • = self::F|constructor#_#new#tearOff; } -static extension-type-member method N|constructor#(asy::Future _) → self::N% /* erasure=asy::Future, declared=! */ { - lowered final self::N% /* erasure=asy::Future, declared=! */ #this = _; +static extension-type-member method N|constructor#(wildcard asy::Future _#wc0#formal) → self::N% /* erasure=asy::Future, declared=! */ { + lowered final self::N% /* erasure=asy::Future, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method N|constructor#_#new#tearOff(asy::Future _) → self::N% /* erasure=asy::Future, declared=! */ - return self::N|constructor#(_); -static extension-type-member method F|constructor#(asy::Future _) → self::F /* erasure=asy::Future */ { - lowered final self::F /* erasure=asy::Future */ #this = _; +static extension-type-member synthetic method N|constructor#_#new#tearOff(asy::Future _#wc0#formal) → self::N% /* erasure=asy::Future, declared=! */ + return self::N|constructor#(_#wc0#formal); +static extension-type-member method F|constructor#(wildcard asy::Future _#wc1#formal) → self::F /* erasure=asy::Future */ { + lowered final self::F /* erasure=asy::Future */ #this = _#wc1#formal; return #this; } -static extension-type-member synthetic method F|constructor#_#new#tearOff(asy::Future _) → self::F /* erasure=asy::Future */ - return self::F|constructor#(_); +static extension-type-member synthetic method F|constructor#_#new#tearOff(asy::Future _#wc1#formal) → self::F /* erasure=asy::Future */ + return self::F|constructor#(_#wc1#formal); static method test, declared=! */, XF extends self::F /* erasure=asy::Future */>(self::N% /* erasure=asy::Future, declared=! */ n, self::F /* erasure=asy::Future */ f, self::test::X% x, self::test::XN% xn, self::test::XF xf, self::N? /* erasure=asy::Future? */ nq, self::F? /* erasure=asy::Future? */ fq, self::test::XN? xnq, self::test::XF? xfq) → void async /* emittedValueType= void */ { await invalid-expression "pkg/front_end/testcases/extension_types/issue54649.dart:10:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'. await n; // Error. diff --git a/pkg/front_end/testcases/extension_types/issue54768.dart.strong.expect b/pkg/front_end/testcases/extension_types/issue54768.dart.strong.expect index 7e3f780d332..a5a7d9718c0 100644 --- a/pkg/front_end/testcases/extension_types/issue54768.dart.strong.expect +++ b/pkg/front_end/testcases/extension_types/issue54768.dart.strong.expect @@ -24,12 +24,12 @@ extension type ET(core::Object? _) { constructor • = self::ET|constructor#; constructor tearoff • = self::ET|constructor#_#new#tearOff; } -static extension-type-member method ET|constructor#(core::Object? _) → self::ET% /* erasure=core::Object?, declared=! */ { - lowered final self::ET% /* erasure=core::Object?, declared=! */ #this = _; +static extension-type-member method ET|constructor#(wildcard core::Object? _#wc0#formal) → self::ET% /* erasure=core::Object?, declared=! */ { + lowered final self::ET% /* erasure=core::Object?, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method ET|constructor#_#new#tearOff(core::Object? _) → self::ET% /* erasure=core::Object?, declared=! */ - return self::ET|constructor#(_); +static extension-type-member synthetic method ET|constructor#_#new#tearOff(core::Object? _#wc0#formal) → self::ET% /* erasure=core::Object?, declared=! */ + return self::ET|constructor#(_#wc0#formal); static extension-type-member method ET|call(lowered final self::ET% /* erasure=core::Object?, declared=! */ #this) → core::String return "ET"; static extension-type-member method ET|get#call(lowered final self::ET% /* erasure=core::Object?, declared=! */ #this) → () → core::String diff --git a/pkg/front_end/testcases/extension_types/issue54768.dart.strong.modular.expect b/pkg/front_end/testcases/extension_types/issue54768.dart.strong.modular.expect index 7e3f780d332..a5a7d9718c0 100644 --- a/pkg/front_end/testcases/extension_types/issue54768.dart.strong.modular.expect +++ b/pkg/front_end/testcases/extension_types/issue54768.dart.strong.modular.expect @@ -24,12 +24,12 @@ extension type ET(core::Object? _) { constructor • = self::ET|constructor#; constructor tearoff • = self::ET|constructor#_#new#tearOff; } -static extension-type-member method ET|constructor#(core::Object? _) → self::ET% /* erasure=core::Object?, declared=! */ { - lowered final self::ET% /* erasure=core::Object?, declared=! */ #this = _; +static extension-type-member method ET|constructor#(wildcard core::Object? _#wc0#formal) → self::ET% /* erasure=core::Object?, declared=! */ { + lowered final self::ET% /* erasure=core::Object?, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method ET|constructor#_#new#tearOff(core::Object? _) → self::ET% /* erasure=core::Object?, declared=! */ - return self::ET|constructor#(_); +static extension-type-member synthetic method ET|constructor#_#new#tearOff(core::Object? _#wc0#formal) → self::ET% /* erasure=core::Object?, declared=! */ + return self::ET|constructor#(_#wc0#formal); static extension-type-member method ET|call(lowered final self::ET% /* erasure=core::Object?, declared=! */ #this) → core::String return "ET"; static extension-type-member method ET|get#call(lowered final self::ET% /* erasure=core::Object?, declared=! */ #this) → () → core::String diff --git a/pkg/front_end/testcases/extension_types/issue54768.dart.strong.outline.expect b/pkg/front_end/testcases/extension_types/issue54768.dart.strong.outline.expect index ad0e6b01590..c3efb30d450 100644 --- a/pkg/front_end/testcases/extension_types/issue54768.dart.strong.outline.expect +++ b/pkg/front_end/testcases/extension_types/issue54768.dart.strong.outline.expect @@ -17,10 +17,10 @@ extension type ET(core::Object? _) { constructor • = self::ET|constructor#; constructor tearoff • = self::ET|constructor#_#new#tearOff; } -static extension-type-member method ET|constructor#(core::Object? _) → self::ET% /* erasure=core::Object?, declared=! */ +static extension-type-member method ET|constructor#(wildcard core::Object? _#wc0#formal) → self::ET% /* erasure=core::Object?, declared=! */ ; -static extension-type-member synthetic method ET|constructor#_#new#tearOff(core::Object? _) → self::ET% /* erasure=core::Object?, declared=! */ - return self::ET|constructor#(_); +static extension-type-member synthetic method ET|constructor#_#new#tearOff(core::Object? _#wc0#formal) → self::ET% /* erasure=core::Object?, declared=! */ + return self::ET|constructor#(_#wc0#formal); static extension-type-member method ET|call(lowered final self::ET% /* erasure=core::Object?, declared=! */ #this) → core::String ; static extension-type-member method ET|get#call(lowered final self::ET% /* erasure=core::Object?, declared=! */ #this) → () → core::String diff --git a/pkg/front_end/testcases/extension_types/issue54768.dart.strong.transformed.expect b/pkg/front_end/testcases/extension_types/issue54768.dart.strong.transformed.expect index 7e3f780d332..a5a7d9718c0 100644 --- a/pkg/front_end/testcases/extension_types/issue54768.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/extension_types/issue54768.dart.strong.transformed.expect @@ -24,12 +24,12 @@ extension type ET(core::Object? _) { constructor • = self::ET|constructor#; constructor tearoff • = self::ET|constructor#_#new#tearOff; } -static extension-type-member method ET|constructor#(core::Object? _) → self::ET% /* erasure=core::Object?, declared=! */ { - lowered final self::ET% /* erasure=core::Object?, declared=! */ #this = _; +static extension-type-member method ET|constructor#(wildcard core::Object? _#wc0#formal) → self::ET% /* erasure=core::Object?, declared=! */ { + lowered final self::ET% /* erasure=core::Object?, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method ET|constructor#_#new#tearOff(core::Object? _) → self::ET% /* erasure=core::Object?, declared=! */ - return self::ET|constructor#(_); +static extension-type-member synthetic method ET|constructor#_#new#tearOff(core::Object? _#wc0#formal) → self::ET% /* erasure=core::Object?, declared=! */ + return self::ET|constructor#(_#wc0#formal); static extension-type-member method ET|call(lowered final self::ET% /* erasure=core::Object?, declared=! */ #this) → core::String return "ET"; static extension-type-member method ET|get#call(lowered final self::ET% /* erasure=core::Object?, declared=! */ #this) → () → core::String diff --git a/pkg/front_end/testcases/extension_types/void.dart.strong.expect b/pkg/front_end/testcases/extension_types/void.dart.strong.expect index a7175bfb72f..0ef6c44d6a3 100644 --- a/pkg/front_end/testcases/extension_types/void.dart.strong.expect +++ b/pkg/front_end/testcases/extension_types/void.dart.strong.expect @@ -6,9 +6,9 @@ extension type ET(void _) { constructor • = self::ET|constructor#; constructor tearoff • = self::ET|constructor#_#new#tearOff; } -static extension-type-member method ET|constructor#(void _) → self::ET% /* erasure=void, declared=! */ { - lowered final self::ET% /* erasure=void, declared=! */ #this = _; +static extension-type-member method ET|constructor#(wildcard void _#wc0#formal) → self::ET% /* erasure=void, declared=! */ { + lowered final self::ET% /* erasure=void, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method ET|constructor#_#new#tearOff(void _) → self::ET% /* erasure=void, declared=! */ - return self::ET|constructor#(_); +static extension-type-member synthetic method ET|constructor#_#new#tearOff(void _#wc0#formal) → self::ET% /* erasure=void, declared=! */ + return self::ET|constructor#(_#wc0#formal); diff --git a/pkg/front_end/testcases/extension_types/void.dart.strong.modular.expect b/pkg/front_end/testcases/extension_types/void.dart.strong.modular.expect index a7175bfb72f..0ef6c44d6a3 100644 --- a/pkg/front_end/testcases/extension_types/void.dart.strong.modular.expect +++ b/pkg/front_end/testcases/extension_types/void.dart.strong.modular.expect @@ -6,9 +6,9 @@ extension type ET(void _) { constructor • = self::ET|constructor#; constructor tearoff • = self::ET|constructor#_#new#tearOff; } -static extension-type-member method ET|constructor#(void _) → self::ET% /* erasure=void, declared=! */ { - lowered final self::ET% /* erasure=void, declared=! */ #this = _; +static extension-type-member method ET|constructor#(wildcard void _#wc0#formal) → self::ET% /* erasure=void, declared=! */ { + lowered final self::ET% /* erasure=void, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method ET|constructor#_#new#tearOff(void _) → self::ET% /* erasure=void, declared=! */ - return self::ET|constructor#(_); +static extension-type-member synthetic method ET|constructor#_#new#tearOff(void _#wc0#formal) → self::ET% /* erasure=void, declared=! */ + return self::ET|constructor#(_#wc0#formal); diff --git a/pkg/front_end/testcases/extension_types/void.dart.strong.outline.expect b/pkg/front_end/testcases/extension_types/void.dart.strong.outline.expect index e4352ced172..9171f32324e 100644 --- a/pkg/front_end/testcases/extension_types/void.dart.strong.outline.expect +++ b/pkg/front_end/testcases/extension_types/void.dart.strong.outline.expect @@ -6,7 +6,7 @@ extension type ET(void _) { constructor • = self::ET|constructor#; constructor tearoff • = self::ET|constructor#_#new#tearOff; } -static extension-type-member method ET|constructor#(void _) → self::ET% /* erasure=void, declared=! */ +static extension-type-member method ET|constructor#(wildcard void _#wc0#formal) → self::ET% /* erasure=void, declared=! */ ; -static extension-type-member synthetic method ET|constructor#_#new#tearOff(void _) → self::ET% /* erasure=void, declared=! */ - return self::ET|constructor#(_); +static extension-type-member synthetic method ET|constructor#_#new#tearOff(void _#wc0#formal) → self::ET% /* erasure=void, declared=! */ + return self::ET|constructor#(_#wc0#formal); diff --git a/pkg/front_end/testcases/extension_types/void.dart.strong.transformed.expect b/pkg/front_end/testcases/extension_types/void.dart.strong.transformed.expect index a7175bfb72f..0ef6c44d6a3 100644 --- a/pkg/front_end/testcases/extension_types/void.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/extension_types/void.dart.strong.transformed.expect @@ -6,9 +6,9 @@ extension type ET(void _) { constructor • = self::ET|constructor#; constructor tearoff • = self::ET|constructor#_#new#tearOff; } -static extension-type-member method ET|constructor#(void _) → self::ET% /* erasure=void, declared=! */ { - lowered final self::ET% /* erasure=void, declared=! */ #this = _; +static extension-type-member method ET|constructor#(wildcard void _#wc0#formal) → self::ET% /* erasure=void, declared=! */ { + lowered final self::ET% /* erasure=void, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method ET|constructor#_#new#tearOff(void _) → self::ET% /* erasure=void, declared=! */ - return self::ET|constructor#(_); +static extension-type-member synthetic method ET|constructor#_#new#tearOff(void _#wc0#formal) → self::ET% /* erasure=void, declared=! */ + return self::ET|constructor#(_#wc0#formal); diff --git a/pkg/front_end/testcases/general/issue54553.dart.strong.expect b/pkg/front_end/testcases/general/issue54553.dart.strong.expect index 9692feaac06..db746be48b8 100644 --- a/pkg/front_end/testcases/general/issue54553.dart.strong.expect +++ b/pkg/front_end/testcases/general/issue54553.dart.strong.expect @@ -51,15 +51,15 @@ extension type EIAliasNullable(self::A? _) { constructor • = self::EIAliasNullable|constructor#; constructor tearoff • = self::EIAliasNullable|constructor#_#new#tearOff; } -static extension-type-member method EINullable|constructor#(core::int? _) → self::EINullable% /* erasure=core::int?, declared=! */ { - lowered final self::EINullable% /* erasure=core::int?, declared=! */ #this = _; +static extension-type-member method EINullable|constructor#(wildcard core::int? _#wc0#formal) → self::EINullable% /* erasure=core::int?, declared=! */ { + lowered final self::EINullable% /* erasure=core::int?, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method EINullable|constructor#_#new#tearOff(core::int? _) → self::EINullable% /* erasure=core::int?, declared=! */ - return self::EINullable|constructor#(_); -static extension-type-member method EIAliasNullable|constructor#(self::A? _) → self::EIAliasNullable% /* erasure=self::A?, declared=! */ { - lowered final self::EIAliasNullable% /* erasure=self::A?, declared=! */ #this = _; +static extension-type-member synthetic method EINullable|constructor#_#new#tearOff(core::int? _#wc0#formal) → self::EINullable% /* erasure=core::int?, declared=! */ + return self::EINullable|constructor#(_#wc0#formal); +static extension-type-member method EIAliasNullable|constructor#(wildcard self::A? _#wc1#formal) → self::EIAliasNullable% /* erasure=self::A?, declared=! */ { + lowered final self::EIAliasNullable% /* erasure=self::A?, declared=! */ #this = _#wc1#formal; return #this; } -static extension-type-member synthetic method EIAliasNullable|constructor#_#new#tearOff(self::A? _) → self::EIAliasNullable% /* erasure=self::A?, declared=! */ - return self::EIAliasNullable|constructor#(_); +static extension-type-member synthetic method EIAliasNullable|constructor#_#new#tearOff(self::A? _#wc1#formal) → self::EIAliasNullable% /* erasure=self::A?, declared=! */ + return self::EIAliasNullable|constructor#(_#wc1#formal); diff --git a/pkg/front_end/testcases/general/issue54553.dart.strong.modular.expect b/pkg/front_end/testcases/general/issue54553.dart.strong.modular.expect index 9692feaac06..db746be48b8 100644 --- a/pkg/front_end/testcases/general/issue54553.dart.strong.modular.expect +++ b/pkg/front_end/testcases/general/issue54553.dart.strong.modular.expect @@ -51,15 +51,15 @@ extension type EIAliasNullable(self::A? _) { constructor • = self::EIAliasNullable|constructor#; constructor tearoff • = self::EIAliasNullable|constructor#_#new#tearOff; } -static extension-type-member method EINullable|constructor#(core::int? _) → self::EINullable% /* erasure=core::int?, declared=! */ { - lowered final self::EINullable% /* erasure=core::int?, declared=! */ #this = _; +static extension-type-member method EINullable|constructor#(wildcard core::int? _#wc0#formal) → self::EINullable% /* erasure=core::int?, declared=! */ { + lowered final self::EINullable% /* erasure=core::int?, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method EINullable|constructor#_#new#tearOff(core::int? _) → self::EINullable% /* erasure=core::int?, declared=! */ - return self::EINullable|constructor#(_); -static extension-type-member method EIAliasNullable|constructor#(self::A? _) → self::EIAliasNullable% /* erasure=self::A?, declared=! */ { - lowered final self::EIAliasNullable% /* erasure=self::A?, declared=! */ #this = _; +static extension-type-member synthetic method EINullable|constructor#_#new#tearOff(core::int? _#wc0#formal) → self::EINullable% /* erasure=core::int?, declared=! */ + return self::EINullable|constructor#(_#wc0#formal); +static extension-type-member method EIAliasNullable|constructor#(wildcard self::A? _#wc1#formal) → self::EIAliasNullable% /* erasure=self::A?, declared=! */ { + lowered final self::EIAliasNullable% /* erasure=self::A?, declared=! */ #this = _#wc1#formal; return #this; } -static extension-type-member synthetic method EIAliasNullable|constructor#_#new#tearOff(self::A? _) → self::EIAliasNullable% /* erasure=self::A?, declared=! */ - return self::EIAliasNullable|constructor#(_); +static extension-type-member synthetic method EIAliasNullable|constructor#_#new#tearOff(self::A? _#wc1#formal) → self::EIAliasNullable% /* erasure=self::A?, declared=! */ + return self::EIAliasNullable|constructor#(_#wc1#formal); diff --git a/pkg/front_end/testcases/general/issue54553.dart.strong.outline.expect b/pkg/front_end/testcases/general/issue54553.dart.strong.outline.expect index a3e3aded75e..d1586fe5db6 100644 --- a/pkg/front_end/testcases/general/issue54553.dart.strong.outline.expect +++ b/pkg/front_end/testcases/general/issue54553.dart.strong.outline.expect @@ -49,11 +49,11 @@ extension type EIAliasNullable(self::A? _) { constructor • = self::EIAliasNullable|constructor#; constructor tearoff • = self::EIAliasNullable|constructor#_#new#tearOff; } -static extension-type-member method EINullable|constructor#(core::int? _) → self::EINullable% /* erasure=core::int?, declared=! */ +static extension-type-member method EINullable|constructor#(wildcard core::int? _#wc0#formal) → self::EINullable% /* erasure=core::int?, declared=! */ ; -static extension-type-member synthetic method EINullable|constructor#_#new#tearOff(core::int? _) → self::EINullable% /* erasure=core::int?, declared=! */ - return self::EINullable|constructor#(_); -static extension-type-member method EIAliasNullable|constructor#(self::A? _) → self::EIAliasNullable% /* erasure=self::A?, declared=! */ +static extension-type-member synthetic method EINullable|constructor#_#new#tearOff(core::int? _#wc0#formal) → self::EINullable% /* erasure=core::int?, declared=! */ + return self::EINullable|constructor#(_#wc0#formal); +static extension-type-member method EIAliasNullable|constructor#(wildcard self::A? _#wc1#formal) → self::EIAliasNullable% /* erasure=self::A?, declared=! */ ; -static extension-type-member synthetic method EIAliasNullable|constructor#_#new#tearOff(self::A? _) → self::EIAliasNullable% /* erasure=self::A?, declared=! */ - return self::EIAliasNullable|constructor#(_); +static extension-type-member synthetic method EIAliasNullable|constructor#_#new#tearOff(self::A? _#wc1#formal) → self::EIAliasNullable% /* erasure=self::A?, declared=! */ + return self::EIAliasNullable|constructor#(_#wc1#formal); diff --git a/pkg/front_end/testcases/general/issue54553.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue54553.dart.strong.transformed.expect index 9692feaac06..db746be48b8 100644 --- a/pkg/front_end/testcases/general/issue54553.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/general/issue54553.dart.strong.transformed.expect @@ -51,15 +51,15 @@ extension type EIAliasNullable(self::A? _) { constructor • = self::EIAliasNullable|constructor#; constructor tearoff • = self::EIAliasNullable|constructor#_#new#tearOff; } -static extension-type-member method EINullable|constructor#(core::int? _) → self::EINullable% /* erasure=core::int?, declared=! */ { - lowered final self::EINullable% /* erasure=core::int?, declared=! */ #this = _; +static extension-type-member method EINullable|constructor#(wildcard core::int? _#wc0#formal) → self::EINullable% /* erasure=core::int?, declared=! */ { + lowered final self::EINullable% /* erasure=core::int?, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method EINullable|constructor#_#new#tearOff(core::int? _) → self::EINullable% /* erasure=core::int?, declared=! */ - return self::EINullable|constructor#(_); -static extension-type-member method EIAliasNullable|constructor#(self::A? _) → self::EIAliasNullable% /* erasure=self::A?, declared=! */ { - lowered final self::EIAliasNullable% /* erasure=self::A?, declared=! */ #this = _; +static extension-type-member synthetic method EINullable|constructor#_#new#tearOff(core::int? _#wc0#formal) → self::EINullable% /* erasure=core::int?, declared=! */ + return self::EINullable|constructor#(_#wc0#formal); +static extension-type-member method EIAliasNullable|constructor#(wildcard self::A? _#wc1#formal) → self::EIAliasNullable% /* erasure=self::A?, declared=! */ { + lowered final self::EIAliasNullable% /* erasure=self::A?, declared=! */ #this = _#wc1#formal; return #this; } -static extension-type-member synthetic method EIAliasNullable|constructor#_#new#tearOff(self::A? _) → self::EIAliasNullable% /* erasure=self::A?, declared=! */ - return self::EIAliasNullable|constructor#(_); +static extension-type-member synthetic method EIAliasNullable|constructor#_#new#tearOff(self::A? _#wc1#formal) → self::EIAliasNullable% /* erasure=self::A?, declared=! */ + return self::EIAliasNullable|constructor#(_#wc1#formal); diff --git a/pkg/front_end/testcases/primary_constructors/wildcards.dart b/pkg/front_end/testcases/primary_constructors/wildcards.dart new file mode 100644 index 00000000000..e7106e75b13 --- /dev/null +++ b/pkg/front_end/testcases/primary_constructors/wildcards.dart @@ -0,0 +1,47 @@ +// Copyright (c) 2026, 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. + +class C1(final int _); + +class C2(var int _); + +class C3(final int _, final int _); // Error + +class C4(int _, int _); // Ok + +class C5(var int _) { + int x = _; // Error + + this : assert(_ > 0); // Error +} + +extension type ET1(int _); + +extension type ET2(final int _); + +extension type ET3(int _) { + this : assert(_ > 0); // Error +} + +main() { + var c1 = C1(0); + expect(0, c1._); + + var c2 = C2(1); + expect(1, c2._); + c2._ = 2; + expect(2, c2._); + + C4(0, 0); + + var et1 = ET1(0); + expect(0, et1._); + + var et2 = ET2(1); + expect(1, et2._); +} + +expect(expected, actual) { + if (expected != actual) throw 'Expected $expected, actual $actual'; +} \ No newline at end of file diff --git a/pkg/front_end/testcases/primary_constructors/wildcards.dart.strong.expect b/pkg/front_end/testcases/primary_constructors/wildcards.dart.strong.expect new file mode 100644 index 00000000000..4db6389cc61 --- /dev/null +++ b/pkg/front_end/testcases/primary_constructors/wildcards.dart.strong.expect @@ -0,0 +1,117 @@ +library; +// +// Problems in library: +// +// pkg/front_end/testcases/primary_constructors/wildcards.dart:9:33: Error: '_' is already declared in this scope. +// class C3(final int _, final int _); // Error +// ^ +// pkg/front_end/testcases/primary_constructors/wildcards.dart:9:20: Context: Previous declaration of '_'. +// class C3(final int _, final int _); // Error +// ^ +// +// pkg/front_end/testcases/primary_constructors/wildcards.dart:14:11: Error: Can't access 'this' in a field initializer to read '_'. +// int x = _; // Error +// ^ +// +// pkg/front_end/testcases/primary_constructors/wildcards.dart:16:17: Error: Can't access 'this' in a field initializer to read '_'. +// this : assert(_ > 0); // Error +// ^ +// +// pkg/front_end/testcases/primary_constructors/wildcards.dart:24:17: Error: Can't access 'this' in a field initializer to read '_'. +// this : assert(_ > 0); // Error +// ^ +// +import self as self; +import "dart:core" as core; + +class C1 extends core::Object { + final field core::int _; + constructor •(final wildcard core::int _#wc0#formal) → self::C1 + : self::C1::_ = _#wc0#formal, super core::Object::•() + ; +} +class C2 extends core::Object { + field core::int _; + constructor •(wildcard core::int _#wc1#formal) → self::C2 + : self::C2::_ = _#wc1#formal, super core::Object::•() + ; +} +class C3 extends core::Object { + final field core::int _; + constructor •(final wildcard core::int _#wc2#formal, final wildcard core::int _#wc3#formal) → self::C3 + : invalid-initializer "pkg/front_end/testcases/primary_constructors/wildcards.dart:9:20: Error: Can't use '_' because it is declared more than once. +class C3(final int _, final int _); // Error + ^", invalid-initializer "pkg/front_end/testcases/primary_constructors/wildcards.dart:9:33: Error: Can't use '_' because it is declared more than once. +class C3(final int _, final int _); // Error + ^" + ; +} +class C4 extends core::Object { + constructor •(wildcard core::int _#wc4#formal, wildcard core::int _#wc5#formal) → self::C4 + : super core::Object::•() + ; +} +class C5 extends core::Object { + field core::int _; + field core::int x; + constructor •(wildcard core::int _#wc6#formal) → self::C5 + : self::C5::x = invalid-expression "pkg/front_end/testcases/primary_constructors/wildcards.dart:14:11: Error: Can't access 'this' in a field initializer to read '_'. + int x = _; // Error + ^", self::C5::_ = _#wc6#formal, assert(invalid-expression "pkg/front_end/testcases/primary_constructors/wildcards.dart:16:17: Error: Can't access 'this' in a field initializer to read '_'. + this : assert(_ > 0); // Error + ^"{}.>(0)), super core::Object::•() + ; +} +extension type ET1(core::int _) { + abstract extension-type-member representation-field get _() → core::int; + constructor • = self::ET1|constructor#; + constructor tearoff • = self::ET1|constructor#_#new#tearOff; +} +extension type ET2(core::int _) { + abstract extension-type-member representation-field get _() → core::int; + constructor • = self::ET2|constructor#; + constructor tearoff • = self::ET2|constructor#_#new#tearOff; +} +extension type ET3(core::int _) { + abstract extension-type-member representation-field get _() → core::int; + constructor • = self::ET3|constructor#; + constructor tearoff • = self::ET3|constructor#_#new#tearOff; +} +static extension-type-member method ET1|constructor#(wildcard core::int _#wc7#formal) → self::ET1% /* erasure=core::int, declared=! */ { + lowered final self::ET1% /* erasure=core::int, declared=! */ #this = _#wc7#formal; + return #this; +} +static extension-type-member synthetic method ET1|constructor#_#new#tearOff(core::int _#wc7#formal) → self::ET1% /* erasure=core::int, declared=! */ + return self::ET1|constructor#(_#wc7#formal); +static extension-type-member method ET2|constructor#(final wildcard core::int _#wc8#formal) → self::ET2% /* erasure=core::int, declared=! */ { + lowered final self::ET2% /* erasure=core::int, declared=! */ #this = _#wc8#formal; + return #this; +} +static extension-type-member synthetic method ET2|constructor#_#new#tearOff(core::int _#wc8#formal) → self::ET2% /* erasure=core::int, declared=! */ + return self::ET2|constructor#(_#wc8#formal); +static extension-type-member method ET3|constructor#(wildcard core::int _#wc9#formal) → self::ET3% /* erasure=core::int, declared=! */ { + lowered final self::ET3% /* erasure=core::int, declared=! */ #this = _#wc9#formal; + assert(invalid-expression "pkg/front_end/testcases/primary_constructors/wildcards.dart:24:17: Error: Can't access 'this' in a field initializer to read '_'. + this : assert(_ > 0); // Error + ^"{}.>(0)); + return #this; +} +static extension-type-member synthetic method ET3|constructor#_#new#tearOff(core::int _#wc9#formal) → self::ET3% /* erasure=core::int, declared=! */ + return self::ET3|constructor#(_#wc9#formal); +static method main() → dynamic { + self::C1 c1 = new self::C1::•(0); + self::expect(0, c1.{self::C1::_}{core::int}); + self::C2 c2 = new self::C2::•(1); + self::expect(1, c2.{self::C2::_}{core::int}); + c2.{self::C2::_} = 2; + self::expect(2, c2.{self::C2::_}{core::int}); + new self::C4::•(0, 0); + self::ET1% /* erasure=core::int, declared=! */ et1 = self::ET1|constructor#(0); + self::expect(0, et1 as{Unchecked} core::int); + self::ET2% /* erasure=core::int, declared=! */ et2 = self::ET2|constructor#(1); + self::expect(1, et2 as{Unchecked} core::int); +} +static method expect(dynamic expected, dynamic actual) → dynamic { + if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) + throw "Expected ${expected}, actual ${actual}"; +} diff --git a/pkg/front_end/testcases/primary_constructors/wildcards.dart.strong.modular.expect b/pkg/front_end/testcases/primary_constructors/wildcards.dart.strong.modular.expect new file mode 100644 index 00000000000..4db6389cc61 --- /dev/null +++ b/pkg/front_end/testcases/primary_constructors/wildcards.dart.strong.modular.expect @@ -0,0 +1,117 @@ +library; +// +// Problems in library: +// +// pkg/front_end/testcases/primary_constructors/wildcards.dart:9:33: Error: '_' is already declared in this scope. +// class C3(final int _, final int _); // Error +// ^ +// pkg/front_end/testcases/primary_constructors/wildcards.dart:9:20: Context: Previous declaration of '_'. +// class C3(final int _, final int _); // Error +// ^ +// +// pkg/front_end/testcases/primary_constructors/wildcards.dart:14:11: Error: Can't access 'this' in a field initializer to read '_'. +// int x = _; // Error +// ^ +// +// pkg/front_end/testcases/primary_constructors/wildcards.dart:16:17: Error: Can't access 'this' in a field initializer to read '_'. +// this : assert(_ > 0); // Error +// ^ +// +// pkg/front_end/testcases/primary_constructors/wildcards.dart:24:17: Error: Can't access 'this' in a field initializer to read '_'. +// this : assert(_ > 0); // Error +// ^ +// +import self as self; +import "dart:core" as core; + +class C1 extends core::Object { + final field core::int _; + constructor •(final wildcard core::int _#wc0#formal) → self::C1 + : self::C1::_ = _#wc0#formal, super core::Object::•() + ; +} +class C2 extends core::Object { + field core::int _; + constructor •(wildcard core::int _#wc1#formal) → self::C2 + : self::C2::_ = _#wc1#formal, super core::Object::•() + ; +} +class C3 extends core::Object { + final field core::int _; + constructor •(final wildcard core::int _#wc2#formal, final wildcard core::int _#wc3#formal) → self::C3 + : invalid-initializer "pkg/front_end/testcases/primary_constructors/wildcards.dart:9:20: Error: Can't use '_' because it is declared more than once. +class C3(final int _, final int _); // Error + ^", invalid-initializer "pkg/front_end/testcases/primary_constructors/wildcards.dart:9:33: Error: Can't use '_' because it is declared more than once. +class C3(final int _, final int _); // Error + ^" + ; +} +class C4 extends core::Object { + constructor •(wildcard core::int _#wc4#formal, wildcard core::int _#wc5#formal) → self::C4 + : super core::Object::•() + ; +} +class C5 extends core::Object { + field core::int _; + field core::int x; + constructor •(wildcard core::int _#wc6#formal) → self::C5 + : self::C5::x = invalid-expression "pkg/front_end/testcases/primary_constructors/wildcards.dart:14:11: Error: Can't access 'this' in a field initializer to read '_'. + int x = _; // Error + ^", self::C5::_ = _#wc6#formal, assert(invalid-expression "pkg/front_end/testcases/primary_constructors/wildcards.dart:16:17: Error: Can't access 'this' in a field initializer to read '_'. + this : assert(_ > 0); // Error + ^"{}.>(0)), super core::Object::•() + ; +} +extension type ET1(core::int _) { + abstract extension-type-member representation-field get _() → core::int; + constructor • = self::ET1|constructor#; + constructor tearoff • = self::ET1|constructor#_#new#tearOff; +} +extension type ET2(core::int _) { + abstract extension-type-member representation-field get _() → core::int; + constructor • = self::ET2|constructor#; + constructor tearoff • = self::ET2|constructor#_#new#tearOff; +} +extension type ET3(core::int _) { + abstract extension-type-member representation-field get _() → core::int; + constructor • = self::ET3|constructor#; + constructor tearoff • = self::ET3|constructor#_#new#tearOff; +} +static extension-type-member method ET1|constructor#(wildcard core::int _#wc7#formal) → self::ET1% /* erasure=core::int, declared=! */ { + lowered final self::ET1% /* erasure=core::int, declared=! */ #this = _#wc7#formal; + return #this; +} +static extension-type-member synthetic method ET1|constructor#_#new#tearOff(core::int _#wc7#formal) → self::ET1% /* erasure=core::int, declared=! */ + return self::ET1|constructor#(_#wc7#formal); +static extension-type-member method ET2|constructor#(final wildcard core::int _#wc8#formal) → self::ET2% /* erasure=core::int, declared=! */ { + lowered final self::ET2% /* erasure=core::int, declared=! */ #this = _#wc8#formal; + return #this; +} +static extension-type-member synthetic method ET2|constructor#_#new#tearOff(core::int _#wc8#formal) → self::ET2% /* erasure=core::int, declared=! */ + return self::ET2|constructor#(_#wc8#formal); +static extension-type-member method ET3|constructor#(wildcard core::int _#wc9#formal) → self::ET3% /* erasure=core::int, declared=! */ { + lowered final self::ET3% /* erasure=core::int, declared=! */ #this = _#wc9#formal; + assert(invalid-expression "pkg/front_end/testcases/primary_constructors/wildcards.dart:24:17: Error: Can't access 'this' in a field initializer to read '_'. + this : assert(_ > 0); // Error + ^"{}.>(0)); + return #this; +} +static extension-type-member synthetic method ET3|constructor#_#new#tearOff(core::int _#wc9#formal) → self::ET3% /* erasure=core::int, declared=! */ + return self::ET3|constructor#(_#wc9#formal); +static method main() → dynamic { + self::C1 c1 = new self::C1::•(0); + self::expect(0, c1.{self::C1::_}{core::int}); + self::C2 c2 = new self::C2::•(1); + self::expect(1, c2.{self::C2::_}{core::int}); + c2.{self::C2::_} = 2; + self::expect(2, c2.{self::C2::_}{core::int}); + new self::C4::•(0, 0); + self::ET1% /* erasure=core::int, declared=! */ et1 = self::ET1|constructor#(0); + self::expect(0, et1 as{Unchecked} core::int); + self::ET2% /* erasure=core::int, declared=! */ et2 = self::ET2|constructor#(1); + self::expect(1, et2 as{Unchecked} core::int); +} +static method expect(dynamic expected, dynamic actual) → dynamic { + if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) + throw "Expected ${expected}, actual ${actual}"; +} diff --git a/pkg/front_end/testcases/primary_constructors/wildcards.dart.strong.outline.expect b/pkg/front_end/testcases/primary_constructors/wildcards.dart.strong.outline.expect new file mode 100644 index 00000000000..10bf6499e4e --- /dev/null +++ b/pkg/front_end/testcases/primary_constructors/wildcards.dart.strong.outline.expect @@ -0,0 +1,70 @@ +library; +// +// Problems in library: +// +// pkg/front_end/testcases/primary_constructors/wildcards.dart:9:33: Error: '_' is already declared in this scope. +// class C3(final int _, final int _); // Error +// ^ +// pkg/front_end/testcases/primary_constructors/wildcards.dart:9:20: Context: Previous declaration of '_'. +// class C3(final int _, final int _); // Error +// ^ +// +import self as self; +import "dart:core" as core; + +class C1 extends core::Object { + final field core::int _; + constructor •(final wildcard core::int _#wc0#formal) → self::C1 + ; +} +class C2 extends core::Object { + field core::int _; + constructor •(wildcard core::int _#wc1#formal) → self::C2 + ; +} +class C3 extends core::Object { + final field core::int _; + constructor •(final wildcard core::int _#wc2#formal, final wildcard core::int _#wc3#formal) → self::C3 + ; +} +class C4 extends core::Object { + constructor •(wildcard core::int _#wc4#formal, wildcard core::int _#wc5#formal) → self::C4 + ; +} +class C5 extends core::Object { + field core::int _; + field core::int x; + constructor •(wildcard core::int _#wc6#formal) → self::C5 + ; +} +extension type ET1(core::int _) { + abstract extension-type-member representation-field get _() → core::int; + constructor • = self::ET1|constructor#; + constructor tearoff • = self::ET1|constructor#_#new#tearOff; +} +extension type ET2(core::int _) { + abstract extension-type-member representation-field get _() → core::int; + constructor • = self::ET2|constructor#; + constructor tearoff • = self::ET2|constructor#_#new#tearOff; +} +extension type ET3(core::int _) { + abstract extension-type-member representation-field get _() → core::int; + constructor • = self::ET3|constructor#; + constructor tearoff • = self::ET3|constructor#_#new#tearOff; +} +static extension-type-member method ET1|constructor#(wildcard core::int _#wc7#formal) → self::ET1% /* erasure=core::int, declared=! */ + ; +static extension-type-member synthetic method ET1|constructor#_#new#tearOff(core::int _#wc7#formal) → self::ET1% /* erasure=core::int, declared=! */ + return self::ET1|constructor#(_#wc7#formal); +static extension-type-member method ET2|constructor#(final wildcard core::int _#wc8#formal) → self::ET2% /* erasure=core::int, declared=! */ + ; +static extension-type-member synthetic method ET2|constructor#_#new#tearOff(core::int _#wc8#formal) → self::ET2% /* erasure=core::int, declared=! */ + return self::ET2|constructor#(_#wc8#formal); +static extension-type-member method ET3|constructor#(wildcard core::int _#wc9#formal) → self::ET3% /* erasure=core::int, declared=! */ + ; +static extension-type-member synthetic method ET3|constructor#_#new#tearOff(core::int _#wc9#formal) → self::ET3% /* erasure=core::int, declared=! */ + return self::ET3|constructor#(_#wc9#formal); +static method main() → dynamic + ; +static method expect(dynamic expected, dynamic actual) → dynamic + ; diff --git a/pkg/front_end/testcases/primary_constructors/wildcards.dart.strong.transformed.expect b/pkg/front_end/testcases/primary_constructors/wildcards.dart.strong.transformed.expect new file mode 100644 index 00000000000..4db6389cc61 --- /dev/null +++ b/pkg/front_end/testcases/primary_constructors/wildcards.dart.strong.transformed.expect @@ -0,0 +1,117 @@ +library; +// +// Problems in library: +// +// pkg/front_end/testcases/primary_constructors/wildcards.dart:9:33: Error: '_' is already declared in this scope. +// class C3(final int _, final int _); // Error +// ^ +// pkg/front_end/testcases/primary_constructors/wildcards.dart:9:20: Context: Previous declaration of '_'. +// class C3(final int _, final int _); // Error +// ^ +// +// pkg/front_end/testcases/primary_constructors/wildcards.dart:14:11: Error: Can't access 'this' in a field initializer to read '_'. +// int x = _; // Error +// ^ +// +// pkg/front_end/testcases/primary_constructors/wildcards.dart:16:17: Error: Can't access 'this' in a field initializer to read '_'. +// this : assert(_ > 0); // Error +// ^ +// +// pkg/front_end/testcases/primary_constructors/wildcards.dart:24:17: Error: Can't access 'this' in a field initializer to read '_'. +// this : assert(_ > 0); // Error +// ^ +// +import self as self; +import "dart:core" as core; + +class C1 extends core::Object { + final field core::int _; + constructor •(final wildcard core::int _#wc0#formal) → self::C1 + : self::C1::_ = _#wc0#formal, super core::Object::•() + ; +} +class C2 extends core::Object { + field core::int _; + constructor •(wildcard core::int _#wc1#formal) → self::C2 + : self::C2::_ = _#wc1#formal, super core::Object::•() + ; +} +class C3 extends core::Object { + final field core::int _; + constructor •(final wildcard core::int _#wc2#formal, final wildcard core::int _#wc3#formal) → self::C3 + : invalid-initializer "pkg/front_end/testcases/primary_constructors/wildcards.dart:9:20: Error: Can't use '_' because it is declared more than once. +class C3(final int _, final int _); // Error + ^", invalid-initializer "pkg/front_end/testcases/primary_constructors/wildcards.dart:9:33: Error: Can't use '_' because it is declared more than once. +class C3(final int _, final int _); // Error + ^" + ; +} +class C4 extends core::Object { + constructor •(wildcard core::int _#wc4#formal, wildcard core::int _#wc5#formal) → self::C4 + : super core::Object::•() + ; +} +class C5 extends core::Object { + field core::int _; + field core::int x; + constructor •(wildcard core::int _#wc6#formal) → self::C5 + : self::C5::x = invalid-expression "pkg/front_end/testcases/primary_constructors/wildcards.dart:14:11: Error: Can't access 'this' in a field initializer to read '_'. + int x = _; // Error + ^", self::C5::_ = _#wc6#formal, assert(invalid-expression "pkg/front_end/testcases/primary_constructors/wildcards.dart:16:17: Error: Can't access 'this' in a field initializer to read '_'. + this : assert(_ > 0); // Error + ^"{}.>(0)), super core::Object::•() + ; +} +extension type ET1(core::int _) { + abstract extension-type-member representation-field get _() → core::int; + constructor • = self::ET1|constructor#; + constructor tearoff • = self::ET1|constructor#_#new#tearOff; +} +extension type ET2(core::int _) { + abstract extension-type-member representation-field get _() → core::int; + constructor • = self::ET2|constructor#; + constructor tearoff • = self::ET2|constructor#_#new#tearOff; +} +extension type ET3(core::int _) { + abstract extension-type-member representation-field get _() → core::int; + constructor • = self::ET3|constructor#; + constructor tearoff • = self::ET3|constructor#_#new#tearOff; +} +static extension-type-member method ET1|constructor#(wildcard core::int _#wc7#formal) → self::ET1% /* erasure=core::int, declared=! */ { + lowered final self::ET1% /* erasure=core::int, declared=! */ #this = _#wc7#formal; + return #this; +} +static extension-type-member synthetic method ET1|constructor#_#new#tearOff(core::int _#wc7#formal) → self::ET1% /* erasure=core::int, declared=! */ + return self::ET1|constructor#(_#wc7#formal); +static extension-type-member method ET2|constructor#(final wildcard core::int _#wc8#formal) → self::ET2% /* erasure=core::int, declared=! */ { + lowered final self::ET2% /* erasure=core::int, declared=! */ #this = _#wc8#formal; + return #this; +} +static extension-type-member synthetic method ET2|constructor#_#new#tearOff(core::int _#wc8#formal) → self::ET2% /* erasure=core::int, declared=! */ + return self::ET2|constructor#(_#wc8#formal); +static extension-type-member method ET3|constructor#(wildcard core::int _#wc9#formal) → self::ET3% /* erasure=core::int, declared=! */ { + lowered final self::ET3% /* erasure=core::int, declared=! */ #this = _#wc9#formal; + assert(invalid-expression "pkg/front_end/testcases/primary_constructors/wildcards.dart:24:17: Error: Can't access 'this' in a field initializer to read '_'. + this : assert(_ > 0); // Error + ^"{}.>(0)); + return #this; +} +static extension-type-member synthetic method ET3|constructor#_#new#tearOff(core::int _#wc9#formal) → self::ET3% /* erasure=core::int, declared=! */ + return self::ET3|constructor#(_#wc9#formal); +static method main() → dynamic { + self::C1 c1 = new self::C1::•(0); + self::expect(0, c1.{self::C1::_}{core::int}); + self::C2 c2 = new self::C2::•(1); + self::expect(1, c2.{self::C2::_}{core::int}); + c2.{self::C2::_} = 2; + self::expect(2, c2.{self::C2::_}{core::int}); + new self::C4::•(0, 0); + self::ET1% /* erasure=core::int, declared=! */ et1 = self::ET1|constructor#(0); + self::expect(0, et1 as{Unchecked} core::int); + self::ET2% /* erasure=core::int, declared=! */ et2 = self::ET2|constructor#(1); + self::expect(1, et2 as{Unchecked} core::int); +} +static method expect(dynamic expected, dynamic actual) → dynamic { + if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) + throw "Expected ${expected}, actual ${actual}"; +} diff --git a/pkg/front_end/testcases/primary_constructors/wildcards.dart.textual_outline.expect b/pkg/front_end/testcases/primary_constructors/wildcards.dart.textual_outline.expect new file mode 100644 index 00000000000..a5cc4672c01 --- /dev/null +++ b/pkg/front_end/testcases/primary_constructors/wildcards.dart.textual_outline.expect @@ -0,0 +1,24 @@ +class C1(final int _); + +class C2(var int _); + +class C3(final int _, final int _); + +class C4(int _, int _); + +class C5(var int _) { + int x = _; + this : assert(_ > 0); +} + +extension type ET1(int _); + +extension type ET2(final int _); + +extension type ET3(int _) { + this : assert(_ > 0); +} + +main() {} + +expect(expected, actual) {} diff --git a/pkg/front_end/testcases/textual_outline.status b/pkg/front_end/testcases/textual_outline.status index 97a2a0c7fd0..d485cce169f 100644 --- a/pkg/front_end/testcases/textual_outline.status +++ b/pkg/front_end/testcases/textual_outline.status @@ -37,6 +37,7 @@ primary_constructors/parameters: FormatterCrash primary_constructors/primary_and_generative: FormatterCrash primary_constructors/primary_constructor_body: FormatterCrash primary_constructors/private_named_declaring_parameters: FormatterCrash +primary_constructors/wildcards: FormatterCrash regress/annotation_on_type_parameter_name_clash_on_constructor: FormatterCrash regress/annotation_on_type_parameter_name_extension_type_constructor: FormatterCrash regress/erroneous_setter: FormatterCrash diff --git a/pkg/front_end/testcases/wildcard_variables/extension_type.dart.strong.expect b/pkg/front_end/testcases/wildcard_variables/extension_type.dart.strong.expect index 3ebd592c777..44c9664d6ec 100644 --- a/pkg/front_end/testcases/wildcard_variables/extension_type.dart.strong.expect +++ b/pkg/front_end/testcases/wildcard_variables/extension_type.dart.strong.expect @@ -8,11 +8,11 @@ extension type Id(core::int _) { constructor • = self::Id|constructor#; constructor tearoff • = self::Id|constructor#_#new#tearOff; } -static extension-type-member method Id|constructor#(core::int _) → self::Id% /* erasure=core::int, declared=! */ { - lowered final self::Id% /* erasure=core::int, declared=! */ #this = _; +static extension-type-member method Id|constructor#(wildcard core::int _#wc0#formal) → self::Id% /* erasure=core::int, declared=! */ { + lowered final self::Id% /* erasure=core::int, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method Id|constructor#_#new#tearOff(core::int _) → self::Id% /* erasure=core::int, declared=! */ - return self::Id|constructor#(_); +static extension-type-member synthetic method Id|constructor#_#new#tearOff(core::int _#wc0#formal) → self::Id% /* erasure=core::int, declared=! */ + return self::Id|constructor#(_#wc0#formal); static extension-type-member method Id|<(lowered final self::Id% /* erasure=core::int, declared=! */ #this, self::Id% /* erasure=core::int, declared=! */ other) → dynamic return (#this as{Unchecked} core::int).{core::num::<}(other as{Unchecked} core::int){(core::num) → core::bool}; diff --git a/pkg/front_end/testcases/wildcard_variables/extension_type.dart.strong.modular.expect b/pkg/front_end/testcases/wildcard_variables/extension_type.dart.strong.modular.expect index 3ebd592c777..44c9664d6ec 100644 --- a/pkg/front_end/testcases/wildcard_variables/extension_type.dart.strong.modular.expect +++ b/pkg/front_end/testcases/wildcard_variables/extension_type.dart.strong.modular.expect @@ -8,11 +8,11 @@ extension type Id(core::int _) { constructor • = self::Id|constructor#; constructor tearoff • = self::Id|constructor#_#new#tearOff; } -static extension-type-member method Id|constructor#(core::int _) → self::Id% /* erasure=core::int, declared=! */ { - lowered final self::Id% /* erasure=core::int, declared=! */ #this = _; +static extension-type-member method Id|constructor#(wildcard core::int _#wc0#formal) → self::Id% /* erasure=core::int, declared=! */ { + lowered final self::Id% /* erasure=core::int, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method Id|constructor#_#new#tearOff(core::int _) → self::Id% /* erasure=core::int, declared=! */ - return self::Id|constructor#(_); +static extension-type-member synthetic method Id|constructor#_#new#tearOff(core::int _#wc0#formal) → self::Id% /* erasure=core::int, declared=! */ + return self::Id|constructor#(_#wc0#formal); static extension-type-member method Id|<(lowered final self::Id% /* erasure=core::int, declared=! */ #this, self::Id% /* erasure=core::int, declared=! */ other) → dynamic return (#this as{Unchecked} core::int).{core::num::<}(other as{Unchecked} core::int){(core::num) → core::bool}; diff --git a/pkg/front_end/testcases/wildcard_variables/extension_type.dart.strong.outline.expect b/pkg/front_end/testcases/wildcard_variables/extension_type.dart.strong.outline.expect index 7b9e25baf01..6e6cbd7bfef 100644 --- a/pkg/front_end/testcases/wildcard_variables/extension_type.dart.strong.outline.expect +++ b/pkg/front_end/testcases/wildcard_variables/extension_type.dart.strong.outline.expect @@ -8,9 +8,9 @@ extension type Id(core::int _) { constructor • = self::Id|constructor#; constructor tearoff • = self::Id|constructor#_#new#tearOff; } -static extension-type-member method Id|constructor#(core::int _) → self::Id% /* erasure=core::int, declared=! */ +static extension-type-member method Id|constructor#(wildcard core::int _#wc0#formal) → self::Id% /* erasure=core::int, declared=! */ ; -static extension-type-member synthetic method Id|constructor#_#new#tearOff(core::int _) → self::Id% /* erasure=core::int, declared=! */ - return self::Id|constructor#(_); +static extension-type-member synthetic method Id|constructor#_#new#tearOff(core::int _#wc0#formal) → self::Id% /* erasure=core::int, declared=! */ + return self::Id|constructor#(_#wc0#formal); static extension-type-member method Id|<(lowered final self::Id% /* erasure=core::int, declared=! */ #this, self::Id% /* erasure=core::int, declared=! */ other) → dynamic ; diff --git a/pkg/front_end/testcases/wildcard_variables/extension_type.dart.strong.transformed.expect b/pkg/front_end/testcases/wildcard_variables/extension_type.dart.strong.transformed.expect index 3ebd592c777..44c9664d6ec 100644 --- a/pkg/front_end/testcases/wildcard_variables/extension_type.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/wildcard_variables/extension_type.dart.strong.transformed.expect @@ -8,11 +8,11 @@ extension type Id(core::int _) { constructor • = self::Id|constructor#; constructor tearoff • = self::Id|constructor#_#new#tearOff; } -static extension-type-member method Id|constructor#(core::int _) → self::Id% /* erasure=core::int, declared=! */ { - lowered final self::Id% /* erasure=core::int, declared=! */ #this = _; +static extension-type-member method Id|constructor#(wildcard core::int _#wc0#formal) → self::Id% /* erasure=core::int, declared=! */ { + lowered final self::Id% /* erasure=core::int, declared=! */ #this = _#wc0#formal; return #this; } -static extension-type-member synthetic method Id|constructor#_#new#tearOff(core::int _) → self::Id% /* erasure=core::int, declared=! */ - return self::Id|constructor#(_); +static extension-type-member synthetic method Id|constructor#_#new#tearOff(core::int _#wc0#formal) → self::Id% /* erasure=core::int, declared=! */ + return self::Id|constructor#(_#wc0#formal); static extension-type-member method Id|<(lowered final self::Id% /* erasure=core::int, declared=! */ #this, self::Id% /* erasure=core::int, declared=! */ other) → dynamic return (#this as{Unchecked} core::int).{core::num::<}(other as{Unchecked} core::int){(core::num) → core::bool};