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

Side by Side Diff: pkg/front_end/lib/src/fasta/source/source_class_builder.dart

Issue 2970273004: Deprecate all diagnostics methods that use strings. (Closed)
Patch Set: Merged with 4df146dd9a465d63344330bf3e45524b927c92ec Created 3 years, 5 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.source_class_builder; 5 library fasta.source_class_builder;
6 6
7 import 'package:front_end/src/fasta/builder/class_builder.dart' 7 import 'package:front_end/src/fasta/builder/class_builder.dart'
8 show ClassBuilder; 8 show ClassBuilder;
9 9
10 import 'package:front_end/src/fasta/source/source_library_builder.dart' 10 import 'package:front_end/src/fasta/source/source_library_builder.dart'
11 show SourceLibraryBuilder; 11 show SourceLibraryBuilder;
12 12
13 import 'package:kernel/ast.dart' 13 import 'package:kernel/ast.dart'
14 show Class, Constructor, Supertype, TreeNode, setParents; 14 show Class, Constructor, Supertype, TreeNode, setParents;
15 15
16 import '../errors.dart' show internalError; 16 import '../deprecated_problems.dart' show deprecated_internalProblem;
17 17
18 import '../kernel/kernel_builder.dart' 18 import '../kernel/kernel_builder.dart'
19 show 19 show
20 Builder, 20 Builder,
21 ConstructorReferenceBuilder, 21 ConstructorReferenceBuilder,
22 KernelClassBuilder, 22 KernelClassBuilder,
23 KernelFieldBuilder, 23 KernelFieldBuilder,
24 KernelFunctionBuilder, 24 KernelFunctionBuilder,
25 KernelLibraryBuilder, 25 KernelLibraryBuilder,
26 KernelTypeBuilder, 26 KernelTypeBuilder,
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 Class build(KernelLibraryBuilder library, LibraryBuilder coreLibrary) { 84 Class build(KernelLibraryBuilder library, LibraryBuilder coreLibrary) {
85 void buildBuilders(String name, Builder builder) { 85 void buildBuilders(String name, Builder builder) {
86 do { 86 do {
87 if (builder is KernelFieldBuilder) { 87 if (builder is KernelFieldBuilder) {
88 // TODO(ahe): It would be nice to have a common interface for the 88 // TODO(ahe): It would be nice to have a common interface for the
89 // build method to avoid duplicating these two cases. 89 // build method to avoid duplicating these two cases.
90 cls.addMember(builder.build(library)); 90 cls.addMember(builder.build(library));
91 } else if (builder is KernelFunctionBuilder) { 91 } else if (builder is KernelFunctionBuilder) {
92 cls.addMember(builder.build(library)); 92 cls.addMember(builder.build(library));
93 } else { 93 } else {
94 internalError("Unhandled builder: ${builder.runtimeType}"); 94 deprecated_internalProblem(
95 "Unhandled builder: ${builder.runtimeType}");
95 } 96 }
96 builder = builder.next; 97 builder = builder.next;
97 } while (builder != null); 98 } while (builder != null);
98 } 99 }
99 100
100 scope.forEach(buildBuilders); 101 scope.forEach(buildBuilders);
101 constructors.forEach(buildBuilders); 102 constructors.forEach(buildBuilders);
102 cls.supertype = supertype?.buildSupertype(library); 103 cls.supertype = supertype?.buildSupertype(library);
103 cls.mixedInType = mixedInType?.buildSupertype(library); 104 cls.mixedInType = mixedInType?.buildSupertype(library);
104 // TODO(ahe): If `cls.supertype` is null, and this isn't Object, report a 105 // TODO(ahe): If `cls.supertype` is null, and this isn't Object, report a
105 // compile-time error. 106 // compile-time error.
106 cls.isAbstract = isAbstract; 107 cls.isAbstract = isAbstract;
107 if (interfaces != null) { 108 if (interfaces != null) {
108 for (KernelTypeBuilder interface in interfaces) { 109 for (KernelTypeBuilder interface in interfaces) {
109 Supertype supertype = interface.buildSupertype(library); 110 Supertype supertype = interface.buildSupertype(library);
110 if (supertype != null) { 111 if (supertype != null) {
111 // TODO(ahe): Report an error if supertype is null. 112 // TODO(ahe): Report an error if supertype is null.
112 cls.implementedTypes.add(supertype); 113 cls.implementedTypes.add(supertype);
113 } 114 }
114 } 115 }
115 } 116 }
116 117
117 constructors.forEach((String name, Builder constructor) { 118 constructors.forEach((String name, Builder constructor) {
118 Builder member = scopeBuilder[name]; 119 Builder member = scopeBuilder[name];
119 if (member == null) return; 120 if (member == null) return;
120 // TODO(ahe): charOffset is missing. 121 // TODO(ahe): charOffset is missing.
121 addCompileTimeError( 122 deprecated_addCompileTimeError(
122 constructor.charOffset, "Conflicts with member '${name}'."); 123 constructor.charOffset, "Conflicts with member '${name}'.");
123 if (constructor.isFactory) { 124 if (constructor.isFactory) {
124 addCompileTimeError(member.charOffset, 125 deprecated_addCompileTimeError(member.charOffset,
125 "Conflicts with factory '${this.name}.${name}'."); 126 "Conflicts with factory '${this.name}.${name}'.");
126 } else { 127 } else {
127 addCompileTimeError(member.charOffset, 128 deprecated_addCompileTimeError(member.charOffset,
128 "Conflicts with constructor '${this.name}.${name}'."); 129 "Conflicts with constructor '${this.name}.${name}'.");
129 } 130 }
130 }); 131 });
131 132
132 scope.setters.forEach((String name, Builder setter) { 133 scope.setters.forEach((String name, Builder setter) {
133 Builder member = scopeBuilder[name]; 134 Builder member = scopeBuilder[name];
134 if (member == null || !member.isField || member.isFinal) return; 135 if (member == null || !member.isField || member.isFinal) return;
135 // TODO(ahe): charOffset is missing. 136 // TODO(ahe): charOffset is missing.
136 var report = member.isInstanceMember != setter.isInstanceMember 137 var report = member.isInstanceMember != setter.isInstanceMember
137 ? addWarning 138 ? deprecated_addWarning
138 : addCompileTimeError; 139 : deprecated_addCompileTimeError;
139 report(setter.charOffset, "Conflicts with member '${name}'."); 140 report(setter.charOffset, "Conflicts with member '${name}'.");
140 report(member.charOffset, "Conflicts with setter '${name}'."); 141 report(member.charOffset, "Conflicts with setter '${name}'.");
141 }); 142 });
142 143
143 cls.procedures.sort(compareProcedures); 144 cls.procedures.sort(compareProcedures);
144 return cls; 145 return cls;
145 } 146 }
146 147
147 void addSyntheticConstructor(Constructor constructor) { 148 void addSyntheticConstructor(Constructor constructor) {
148 String name = constructor.name.name; 149 String name = constructor.name.name;
149 cls.constructors.add(constructor); 150 cls.constructors.add(constructor);
150 constructor.parent = cls; 151 constructor.parent = cls;
151 DillMemberBuilder memberBuilder = new DillMemberBuilder(constructor, this); 152 DillMemberBuilder memberBuilder = new DillMemberBuilder(constructor, this);
152 memberBuilder.next = constructorScopeBuilder[name]; 153 memberBuilder.next = constructorScopeBuilder[name];
153 constructorScopeBuilder.addMember(name, memberBuilder); 154 constructorScopeBuilder.addMember(name, memberBuilder);
154 } 155 }
155 156
156 @override 157 @override
157 void prepareInitializerInference( 158 void prepareInitializerInference(
158 SourceLibraryBuilder library, ClassBuilder currentClass) { 159 SourceLibraryBuilder library, ClassBuilder currentClass) {
159 scope.forEach((name, builder) { 160 scope.forEach((name, builder) {
160 builder.prepareInitializerInference(library, this); 161 builder.prepareInitializerInference(library, this);
161 }); 162 });
162 } 163 }
163 } 164 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698