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

Unified Diff: pkg/front_end/lib/src/fasta/builder/class_builder.dart

Issue 2765943002: Improve handling of complicated getters and setters. (Closed)
Patch Set: Created 3 years, 9 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
« no previous file with comments | « no previous file | pkg/front_end/lib/src/fasta/kernel/body_builder.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/front_end/lib/src/fasta/builder/class_builder.dart
diff --git a/pkg/front_end/lib/src/fasta/builder/class_builder.dart b/pkg/front_end/lib/src/fasta/builder/class_builder.dart
index 65903a77ab3c39547a30ed56009998b31e85ba5d..113222635c94ebf01a28097817733aa3541ae6ee 100644
--- a/pkg/front_end/lib/src/fasta/builder/class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/class_builder.dart
@@ -18,7 +18,7 @@ import 'builder.dart'
TypeDeclarationBuilder,
TypeVariableBuilder;
-import 'scope.dart' show AmbiguousBuilder, Scope;
+import 'scope.dart' show AccessErrorBuilder, AmbiguousBuilder, Scope;
abstract class ClassBuilder<T extends TypeBuilder, R>
extends TypeDeclarationBuilder<T, R> {
@@ -97,7 +97,22 @@ abstract class ClassBuilder<T extends TypeBuilder, R>
}
current = current.next;
}
+ if (getterBuilder?.isInstanceMember ?? false) {
ahe 2017/03/21 18:36:21 Consider cases like this: class C { static get
+ getterBuilder = null;
+ }
+ if (setterBuilder?.isInstanceMember ?? false) {
+ setterBuilder = null;
+ }
builder = isSetter ? setterBuilder : getterBuilder;
+ if (builder == null) {
+ if (isSetter && getterBuilder != null) {
+ return new AccessErrorBuilder(
+ name, getterBuilder, charOffset, fileUri);
+ } else if (!isSetter && setterBuilder != null) {
+ return new AccessErrorBuilder(
+ name, setterBuilder, charOffset, fileUri);
+ }
+ }
}
if (builder == null) {
return null;
« no previous file with comments | « no previous file | pkg/front_end/lib/src/fasta/kernel/body_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698