Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(97)

Unified Diff: pkg/front_end/lib/src/fasta/kernel/kernel_named_type_builder.dart

Issue 2862223002: Rewrite mixin application handling in Fasta. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/front_end/lib/src/fasta/kernel/kernel_named_type_builder.dart
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_named_type_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_named_type_builder.dart
index 94e62ffc6406ee073d19445df8d25f03b8eb9fea..873c3246a15e433f7712c50e29408bcf2dc7f7a3 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_named_type_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_named_type_builder.dart
@@ -10,15 +10,10 @@ import '../messages.dart' show warning;
import 'kernel_builder.dart'
show
- Builder,
- ClassBuilder,
- DynamicTypeBuilder,
KernelClassBuilder,
KernelInvalidTypeBuilder,
KernelTypeBuilder,
LibraryBuilder,
- MixinApplicationBuilder,
- NamedMixinApplicationBuilder,
NamedTypeBuilder,
TypeBuilder,
TypeVariableBuilder;
@@ -93,57 +88,4 @@ class KernelNamedTypeBuilder
}
return this;
}
-
- @override
- TypeBuilder computeMixin(
- Uri fileUri, int charOffset, LibraryBuilder library) {
- if (false && builder is NamedMixinApplicationBuilder) {
- NamedMixinApplicationBuilder builder = this.builder;
- var superclass = builder.mixinApplication.mixins.last;
- while (superclass is MixinApplicationBuilder) {
- superclass = superclass.mixins.last;
- }
- KernelTypeBuilder dynamicType =
- new KernelNamedTypeBuilder("dynamic", null, charOffset, fileUri)
- ..bind(new DynamicTypeBuilder(const DynamicType(), library, -1));
- Map<TypeVariableBuilder, TypeBuilder> substitution =
- builder.getSubstitutionMap(
- superclass.builder, fileUri, charOffset, dynamicType);
- if (substitution != null) {
- superclass = superclass.subst(substitution);
- }
- if (builder.typeVariables != null) {
- substitution = <TypeVariableBuilder, TypeBuilder>{};
- List<KernelTypeBuilder> arguments =
- this.arguments ?? const <KernelTypeBuilder>[];
- for (int i = 0; i < builder.typeVariables.length; i++) {
- KernelTypeBuilder argument =
- i < arguments.length ? arguments[i] : dynamicType;
- substitution[builder.typeVariables[i]] = argument;
- }
- superclass = superclass.subst(substitution);
- }
- return superclass;
- }
- if (builder is ClassBuilder) {
- // ignore: INVALID_ASSIGNMENT
- ClassBuilder cls = builder;
- for (Builder constructory in cls.constructors.local.values) {
- if (constructory.isConstructor && !constructory.isSynthetic) {
- library.addCompileTimeError(
- charOffset,
- "Can't use '$fullNameForErrors' as a mixin because it has "
- "constructors.",
- fileUri: fileUri);
- library.addCompileTimeError(
- constructory.charOffset,
- "This constructor prevents using '$fullNameForErrors' as a "
- "mixin.",
- fileUri: builder.fileUri);
- }
- }
- return this;
- }
- return super.computeMixin(fileUri, charOffset, library);
- }
}

Powered by Google App Engine
This is Rietveld 408576698