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

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

Issue 2682333004: Remove convertConstructors. (Closed)
Patch Set: Long line. Created 3 years, 10 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/source/source_class_builder.dart
diff --git a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
index 83af55663e6583f0c602d2d711e8a4a539d84b29..66f49afbd13c9345c7ee3c24a685513b44892db5 100644
--- a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
@@ -12,8 +12,7 @@ import 'package:kernel/ast.dart' show
setParents;
import '../errors.dart' show
- internalError,
- inputError;
+ internalError;
import '../kernel/kernel_builder.dart' show
Builder,
@@ -22,11 +21,9 @@ import '../kernel/kernel_builder.dart' show
KernelFieldBuilder,
KernelFunctionBuilder,
KernelLibraryBuilder,
- KernelProcedureBuilder,
KernelTypeBuilder,
KernelTypeVariableBuilder,
LibraryBuilder,
- MemberBuilder,
MetadataBuilder,
ProcedureBuilder,
TypeVariableBuilder;
@@ -50,7 +47,7 @@ Class initializeClass(Class cls, String name, LibraryBuilder parent,
class SourceClassBuilder extends KernelClassBuilder {
final Class cls;
- final Map<String, Builder> constructors = <String, Builder>{};
+ final Map<String, Builder> constructors;
final Map<String, Builder> membersInScope;
@@ -62,7 +59,8 @@ class SourceClassBuilder extends KernelClassBuilder {
Map<String, Builder> members, LibraryBuilder parent,
this.constructorReferences, int charOffset, [Class cls])
: cls = initializeClass(cls, name, parent, charOffset),
- membersInScope = computeMembersInScope(members, name),
+ membersInScope = computeMembersInScope(members),
+ constructors = computeConstructors(members),
super(metadata, modifiers, name, typeVariables, supertype, interfaces,
members, parent, charOffset);
@@ -112,38 +110,6 @@ class SourceClassBuilder extends KernelClassBuilder {
return cls;
}
- int convertConstructors(KernelLibraryBuilder library) {
- List<String> oldConstructorNames = <String>[];
- members.forEach((String name, MemberBuilder builder) {
- if (isConstructorName(name, this.name)) {
- oldConstructorNames.add(name);
- String newName = "";
- int index = name.indexOf(".");
- if (index != -1) {
- newName = name.substring(index + 1);
- }
- if (builder is KernelProcedureBuilder) {
- Builder constructor = builder.toConstructor(newName, typeVariables);
- Builder other = members[newName];
- if (other != null) {
- return inputError(null, null, "Constructor name '$newName' "
- "conflicts with other declaration.");
- }
- constructors[newName] = constructor;
- } else {
- return inputError(null, null, "Expected a constructor or factory.");
- }
- }
- });
- for (String name in oldConstructorNames) {
- members.remove(name);
- }
- constructors.forEach((String name, Builder builder) {
- members[name] = builder;
- });
- return oldConstructorNames.length;
- }
-
Builder findConstructorOrFactory(String name) => constructors[name];
void addSyntheticConstructor(Constructor constructor) {
@@ -156,26 +122,24 @@ class SourceClassBuilder extends KernelClassBuilder {
}
}
-bool isConstructorName(String name, String className) {
- if (name.startsWith(className)) {
- if (name.length == className.length) return true;
- if (name.startsWith(".", className.length)) return true;
- }
- return false;
-}
-
-Map<String, Builder> computeMembersInScope(Map<String, Builder> members,
- String className) {
+Map<String, Builder> computeMembersInScope(Map<String, Builder> members) {
Map<String, Builder> membersInScope = <String, Builder>{};
members.forEach((String name, Builder builder) {
if (builder is ProcedureBuilder) {
- if (isConstructorName(builder.name, className)) return;
- }
- if (name.indexOf(".") != -1) {
- inputError(null, null, "Only constructors and factories can have names "
- "containing a period ('.'): $name");
+ if (builder.isConstructor || builder.isFactory) return;
}
membersInScope[name] = builder;
});
return membersInScope;
}
+
+Map<String, Builder> computeConstructors(Map<String, Builder> members) {
+ Map<String, Builder> constructors = <String, Builder>{};
+ members.forEach((String name, Builder builder) {
+ if (builder is ProcedureBuilder &&
+ (builder.isConstructor || builder.isFactory)) {
+ constructors[name] = builder;
+ }
+ });
+ return constructors;
+}

Powered by Google App Engine
This is Rietveld 408576698