Index: pkg/front_end/lib/src/fasta/scope.dart |
diff --git a/pkg/front_end/lib/src/fasta/scope.dart b/pkg/front_end/lib/src/fasta/scope.dart |
index 2dd1656ef0bf633fb525fc4f7574981daa07c032..6fdcce39f2de503e04f14655386b2e44ce6dcbb4 100644 |
--- a/pkg/front_end/lib/src/fasta/scope.dart |
+++ b/pkg/front_end/lib/src/fasta/scope.dart |
@@ -6,7 +6,7 @@ library fasta.scope; |
import 'builder/builder.dart' show Builder, TypeVariableBuilder; |
-import 'errors.dart' show internalError; |
+import 'errors.dart' show InputError, internalError; |
class MutableScope { |
/// Names declared in this scope. |
@@ -167,13 +167,20 @@ class Scope extends MutableScope { |
return (labels == null ? null : labels[name]) ?? parent?.lookupLabel(name); |
} |
- // TODO(ahe): Rename to extend or something. |
- void operator []=(String name, Builder member) { |
+ /// Declares that the meaning of [name] in this scope is [builder]. |
+ /// |
+ /// If name was used previously in this scope, this method returns an error |
+ /// that should be reported as a compile-time error. The position of this |
+ /// error is given by [charOffset] and [fileUri]. |
+ InputError declare( |
+ String name, Builder builder, int charOffset, Uri fileUri) { |
if (isModifiable) { |
- local[name] = member; |
+ local[name] = builder; |
} else { |
internalError("Can't extend an unmodifiable scope."); |
} |
+ // TODO(ahe): Return an error if [name] was already used in this scope. |
+ return null; |
} |
void merge(Scope scope, |