Chromium Code Reviews| Index: dart/site/try/poi/poi.dart |
| diff --git a/dart/site/try/poi/poi.dart b/dart/site/try/poi/poi.dart |
| index 2c85c8b0dc1b40ef6e9fc98a3ef71bc10644164c..3ba69f647f6acc2293f0e3c4a7e1d40c78d22be3 100644 |
| --- a/dart/site/try/poi/poi.dart |
| +++ b/dart/site/try/poi/poi.dart |
| @@ -41,13 +41,17 @@ import 'package:compiler/implementation/elements/visitor.dart' show |
| ElementVisitor; |
| import 'package:compiler/implementation/elements/elements.dart' show |
| + AbstractFieldElement, |
| ClassElement, |
| CompilationUnitElement, |
| Element, |
| ElementCategory, |
| + FunctionElement, |
| LibraryElement, |
| ScopeContainerElement; |
| +import 'package:compiler/implementation/elements/modelx.dart' as modelx; |
| + |
| import 'package:compiler/implementation/dart_types.dart' show |
| DartType; |
| @@ -365,7 +369,7 @@ class ScopeInformationVisitor extends ElementVisitor/* <void> */ { |
| indented.write('"kind": "imports",\n'); |
| indented.write('"members": ['); |
| indentationLevel++; |
| - e.importScope.importScope.values.forEach(forEach); |
| + importScope(e).importScope.values.forEach(forEach); |
|
Johnni Winther
2014/08/19 06:59:29
Why this change?
ahe
2014/08/19 08:41:52
This code caused a warning. To avoid the warning,
|
| indentationLevel--; |
| buffer.write('\n'); |
| indented.write('],\n'); |
| @@ -380,7 +384,7 @@ class ScopeInformationVisitor extends ElementVisitor/* <void> */ { |
| }, |
| serializeMembers: () { |
| isFirst = true; |
| - e.localScope.values.forEach(forEach); |
| + localScope(e).values.forEach(forEach); |
|
Johnni Winther
2014/08/19 06:59:29
Ditto.
|
| }); |
| } |
| @@ -467,6 +471,10 @@ class ScopeInformationVisitor extends ElementVisitor/* <void> */ { |
| e.enclosingElement.accept(this); |
| } |
| + void visitAbstractFieldElement(AbstractFieldElement e) { |
| + throw new UnsupportedError('AbstractFieldElement cannot be serialized.'); |
| + } |
| + |
| void serialize( |
| Element element, |
| {bool omitEnclosing: true, |
| @@ -474,6 +482,34 @@ class ScopeInformationVisitor extends ElementVisitor/* <void> */ { |
| void serializeEnclosing(), |
| String kind, |
| String name}) { |
| + if (element.isAbstractField) { |
| + AbstractFieldElement field = element; |
| + FunctionElement getter = field.getter; |
| + FunctionElement setter = field.setter; |
| + if (getter != null) { |
| + serialize( |
| + getter, |
| + omitEnclosing: omitEnclosing, |
| + serializeMembers: serializeMembers, |
| + serializeEnclosing: serializeEnclosing, |
| + kind: kind, |
| + name: name); |
| + } |
| + if (setter != null) { |
| + if (getter != null) { |
| + buffer.write(',\n'); |
| + indented; |
| + } |
| + serialize( |
| + getter, |
| + omitEnclosing: omitEnclosing, |
| + serializeMembers: serializeMembers, |
| + serializeEnclosing: serializeEnclosing, |
| + kind: kind, |
| + name: name); |
| + } |
| + return; |
| + } |
| DartType type; |
| int category = element.kind.category; |
| if (category == ElementCategory.FUNCTION || |
| @@ -529,3 +565,9 @@ class ScopeInformationVisitor extends ElementVisitor/* <void> */ { |
| indented.write('}'); |
| } |
| } |
| + |
| +modelx.ScopeX localScope(modelx.LibraryElementX element) => element.localScope; |
| + |
| +modelx.ImportScope importScope(modelx.LibraryElementX element) { |
| + return element.importScope; |
| +} |