Index: pkg/front_end/lib/src/fasta/kernel/kernel_mixin_application_builder.dart |
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_mixin_application_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_mixin_application_builder.dart |
index 9c46ba8cda3ab35465af3bf0eb4ceed25abf0233..1978c66b74564c33c379c86fc11a383c66458f2f 100644 |
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_mixin_application_builder.dart |
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_mixin_application_builder.dart |
@@ -4,26 +4,18 @@ |
library fasta.kernel_mixin_application_builder; |
-import 'package:kernel/ast.dart' show InterfaceType, Supertype, setParents; |
+import 'package:kernel/ast.dart' show InterfaceType, Supertype; |
-import '../modifier.dart' show abstractMask; |
- |
-import '../source/source_class_builder.dart' show SourceClassBuilder; |
+import '../errors.dart' show internalError; |
import '../util/relativize.dart' show relativizeUri; |
import 'kernel_builder.dart' |
show |
- ConstructorReferenceBuilder, |
KernelLibraryBuilder, |
- KernelNamedTypeBuilder, |
KernelTypeBuilder, |
- KernelTypeVariableBuilder, |
LibraryBuilder, |
- MemberBuilder, |
MixinApplicationBuilder, |
- Scope, |
- TypeBuilder, |
TypeVariableBuilder; |
class KernelMixinApplicationBuilder |
@@ -48,72 +40,10 @@ class KernelMixinApplicationBuilder |
super(supertype, mixins, charOffset, fileUri); |
InterfaceType build(LibraryBuilder library) { |
- return buildSupertype(library)?.asInterfaceType; |
+ return internalError("Unsupported operation."); |
} |
Supertype buildSupertype(LibraryBuilder library) { |
- if (builtType != null) return builtType; |
- KernelTypeBuilder s = this.supertype; |
- for (KernelTypeBuilder builder in mixins) { |
- s = applyMixin(s, builder); |
- } |
- builtType = s.buildSupertype(library); |
- return builtType; |
- } |
- |
- TypeBuilder applyMixin(TypeBuilder supertype, TypeBuilder mixin) { |
- KernelLibraryBuilder library = this.library.partOfLibrary ?? this.library; |
- List<KernelTypeBuilder> typeArguments; |
- List<TypeVariableBuilder> newTypeVariables; |
- if (typeVariables != null) { |
- assert(subclassName != null); |
- newTypeVariables = library.copyTypeVariables(typeVariables); |
- Map<TypeVariableBuilder, TypeBuilder> substitution = |
- <TypeVariableBuilder, TypeBuilder>{}; |
- typeArguments = <KernelTypeBuilder>[]; |
- for (int i = 0; i < typeVariables.length; i++) { |
- substitution[typeVariables[i]] = newTypeVariables[i].asTypeBuilder(); |
- typeArguments.add(typeVariables[i].asTypeBuilder()); |
- } |
- supertype = supertype.subst(substitution); |
- mixin = mixin.subst(substitution); |
- } |
- // To reduce diff against dartk, we create a different name for mixin |
- // applications that have free type variables. We do this by setting |
- // [subclassName] when setting typeVariables. |
- String name = subclassName != null |
- ? "${subclassName}^${mixin.name}" |
- : "${supertype.name}&${mixin.name}"; |
- |
- SourceClassBuilder cls = |
- library.mixinApplicationClasses.putIfAbsent(name, () { |
- SourceClassBuilder cls = new SourceClassBuilder( |
- null, |
- abstractMask, |
- name, |
- newTypeVariables, |
- supertype, |
- null, |
- new Scope(<String, MemberBuilder>{}, <String, MemberBuilder>{}, |
- library.scope.withTypeVariables(newTypeVariables), |
- isModifiable: false), |
- new Scope(<String, MemberBuilder>{}, null, null, isModifiable: false), |
- library, |
- <ConstructorReferenceBuilder>[], |
- charOffset, |
- null, |
- mixin); |
- library.addImplementationBuilder(name, cls, charOffset); |
- if (newTypeVariables != null) { |
- for (KernelTypeVariableBuilder t in newTypeVariables) { |
- cls.cls.typeParameters.add(t.parameter); |
- } |
- setParents(cls.cls.typeParameters, cls.cls); |
- } |
- return cls; |
- }); |
- return new KernelNamedTypeBuilder( |
- name, typeArguments, charOffset, library.fileUri) |
- ..builder = cls; |
+ return internalError("Unsupported operation."); |
} |
} |