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

Side by Side Diff: pkg/front_end/lib/src/fasta/kernel/kernel_mixin_application_builder.dart

Issue 2788153002: Create separate scopes for constructors, setters, and other members. (Closed)
Patch Set: Update subpackage dependencies. Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library fasta.kernel_mixin_application_builder; 5 library fasta.kernel_mixin_application_builder;
6 6
7 import 'package:kernel/ast.dart' show InterfaceType, Supertype, setParents; 7 import 'package:kernel/ast.dart' show InterfaceType, Supertype, setParents;
8 8
9 import '../modifier.dart' show abstractMask; 9 import '../modifier.dart' show abstractMask;
10 10
11 import '../source/source_class_builder.dart' show SourceClassBuilder;
12
13 import '../util/relativize.dart' show relativizeUri;
14
11 import 'kernel_builder.dart' 15 import 'kernel_builder.dart'
12 show 16 show
13 Builder,
14 ConstructorReferenceBuilder, 17 ConstructorReferenceBuilder,
15 KernelLibraryBuilder, 18 KernelLibraryBuilder,
16 KernelNamedTypeBuilder, 19 KernelNamedTypeBuilder,
17 KernelTypeBuilder, 20 KernelTypeBuilder,
18 KernelTypeVariableBuilder, 21 KernelTypeVariableBuilder,
19 LibraryBuilder, 22 LibraryBuilder,
23 MemberBuilder,
20 MixinApplicationBuilder, 24 MixinApplicationBuilder,
25 Scope,
21 TypeBuilder, 26 TypeBuilder,
22 TypeVariableBuilder; 27 TypeVariableBuilder;
23 28
24 import '../util/relativize.dart' show relativizeUri;
25
26 import '../source/source_class_builder.dart' show SourceClassBuilder;
27
28 class KernelMixinApplicationBuilder 29 class KernelMixinApplicationBuilder
29 extends MixinApplicationBuilder<KernelTypeBuilder> 30 extends MixinApplicationBuilder<KernelTypeBuilder>
30 implements KernelTypeBuilder { 31 implements KernelTypeBuilder {
31 final int charOffset; 32 final int charOffset;
32 33
33 final String relativeFileUri; 34 final String relativeFileUri;
34 35
35 final KernelLibraryBuilder library; 36 final KernelLibraryBuilder library;
36 37
37 Supertype builtType; 38 Supertype builtType;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 87
87 SourceClassBuilder cls = 88 SourceClassBuilder cls =
88 library.mixinApplicationClasses.putIfAbsent(name, () { 89 library.mixinApplicationClasses.putIfAbsent(name, () {
89 SourceClassBuilder cls = new SourceClassBuilder( 90 SourceClassBuilder cls = new SourceClassBuilder(
90 null, 91 null,
91 abstractMask, 92 abstractMask,
92 name, 93 name,
93 newTypeVariables, 94 newTypeVariables,
94 supertype, 95 supertype,
95 null, 96 null,
96 <String, Builder>{}, 97 new Scope(<String, MemberBuilder>{}, <String, MemberBuilder>{},
98 library.scope.withTypeVariables(newTypeVariables),
99 isModifiable: false),
100 new Scope(<String, MemberBuilder>{}, null, null, isModifiable: false),
97 library, 101 library,
98 <ConstructorReferenceBuilder>[], 102 <ConstructorReferenceBuilder>[],
99 charOffset, 103 charOffset,
100 null, 104 null,
101 mixin); 105 mixin);
102 library.addImplementationBuilder(name, cls, charOffset); 106 library.addImplementationBuilder(name, cls, charOffset);
103 if (newTypeVariables != null) { 107 if (newTypeVariables != null) {
104 for (KernelTypeVariableBuilder t in newTypeVariables) { 108 for (KernelTypeVariableBuilder t in newTypeVariables) {
105 cls.cls.typeParameters.add(t.parameter); 109 cls.cls.typeParameters.add(t.parameter);
106 } 110 }
107 setParents(cls.cls.typeParameters, cls.cls); 111 setParents(cls.cls.typeParameters, cls.cls);
108 } 112 }
109 return cls; 113 return cls;
110 }); 114 });
111 return new KernelNamedTypeBuilder( 115 return new KernelNamedTypeBuilder(
112 name, typeArguments, charOffset, library.fileUri)..builder = cls; 116 name, typeArguments, charOffset, library.fileUri)..builder = cls;
113 } 117 }
114 } 118 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698