| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2012, 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('elements'); | 5 #library('elements'); | 
| 6 | 6 | 
| 7 #import('dart:uri'); | 7 #import('dart:uri'); | 
| 8 | 8 | 
| 9 #import('../tree/tree.dart'); | 9 #import('../tree/tree.dart'); | 
| 10 #import('../scanner/scannerlib.dart'); | 10 #import('../scanner/scannerlib.dart'); | 
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 267 | 267 | 
| 268   bool _isNative = false; | 268   bool _isNative = false; | 
| 269   void setNative() { _isNative = true; } | 269   void setNative() { _isNative = true; } | 
| 270   bool isNative() => _isNative; | 270   bool isNative() => _isNative; | 
| 271 | 271 | 
| 272   FunctionElement asFunctionElement() => null; | 272   FunctionElement asFunctionElement() => null; | 
| 273 | 273 | 
| 274   Element cloneTo(Element enclosing, DiagnosticListener listener) { | 274   Element cloneTo(Element enclosing, DiagnosticListener listener) { | 
| 275     listener.cancel("Unimplemented cloneTo", element: this); | 275     listener.cancel("Unimplemented cloneTo", element: this); | 
| 276   } | 276   } | 
|  | 277 | 
|  | 278   Link<Type> get allSupertypesAndSelf() { | 
|  | 279     return allSupertypes.prepend(new InterfaceType(this)); | 
|  | 280   } | 
| 277 } | 281 } | 
| 278 | 282 | 
| 279 class ContainerElement extends Element { | 283 class ContainerElement extends Element { | 
| 280   Link<Element> localMembers = const EmptyLink<Element>(); | 284   Link<Element> localMembers = const EmptyLink<Element>(); | 
| 281 | 285 | 
| 282   ContainerElement(name, kind, enclosingElement) | 286   ContainerElement(name, kind, enclosingElement) | 
| 283     : super(name, kind, enclosingElement); | 287     : super(name, kind, enclosingElement); | 
| 284 | 288 | 
| 285   void addMember(Element element, DiagnosticListener listener) { | 289   void addMember(Element element, DiagnosticListener listener) { | 
| 286     localMembers = localMembers.prepend(element); | 290     localMembers = localMembers.prepend(element); | 
| (...skipping 772 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1059     bool isPrivate = memberName.isPrivate(); | 1063     bool isPrivate = memberName.isPrivate(); | 
| 1060     for (ClassElement s = superclass; s != null; s = s.superclass) { | 1064     for (ClassElement s = superclass; s != null; s = s.superclass) { | 
| 1061       // Private members from a different library are not visible. | 1065       // Private members from a different library are not visible. | 
| 1062       if (isPrivate && getLibrary() !== s.getLibrary()) continue; | 1066       if (isPrivate && getLibrary() !== s.getLibrary()) continue; | 
| 1063       Element e = s.lookupLocalMember(memberName); | 1067       Element e = s.lookupLocalMember(memberName); | 
| 1064       if (e === null) continue; | 1068       if (e === null) continue; | 
| 1065       // Static members are not inherited. | 1069       // Static members are not inherited. | 
| 1066       if (e.modifiers.isStatic()) continue; | 1070       if (e.modifiers.isStatic()) continue; | 
| 1067       return e; | 1071       return e; | 
| 1068     } | 1072     } | 
|  | 1073     if (isInterface()) { | 
|  | 1074       return lookupSuperInterfaceMember(memberName, getLibrary()); | 
|  | 1075     } | 
|  | 1076     return null; | 
|  | 1077   } | 
|  | 1078 | 
|  | 1079   Element lookupSuperInterfaceMember(SourceString memberName, | 
|  | 1080                                      LibraryElement fromLibrary) { | 
|  | 1081     bool isPrivate = memberName.isPrivate(); | 
|  | 1082     for (Type t in interfaces) { | 
|  | 1083       Element e = t.element.lookupLocalMember(memberName); | 
|  | 1084       if (e === null) continue; | 
|  | 1085       // Private members from a different library are not visible. | 
|  | 1086       if (isPrivate && fromLibrary !== e.getLibrary()) continue; | 
|  | 1087       // Static members are not inherited. | 
|  | 1088       if (e.modifiers.isStatic()) continue; | 
|  | 1089       return e; | 
|  | 1090     } | 
| 1069     return null; | 1091     return null; | 
| 1070   } | 1092   } | 
| 1071 | 1093 | 
| 1072   /** | 1094   /** | 
| 1073    * Find the first member in the class chain with the given | 1095    * Find the first member in the class chain with the given | 
| 1074    * [memberName]. This method is NOT to be used for resolving | 1096    * [memberName]. This method is NOT to be used for resolving | 
| 1075    * unqualified sends because it does not implement the scoping | 1097    * unqualified sends because it does not implement the scoping | 
| 1076    * rules, where library scope comes before superclass scope. | 1098    * rules, where library scope comes before superclass scope. | 
| 1077    */ | 1099    */ | 
| 1078   Element lookupMember(SourceString memberName) { | 1100   Element lookupMember(SourceString memberName) { | 
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1427   Node parseNode(compiler) => cachedNode; | 1449   Node parseNode(compiler) => cachedNode; | 
| 1428 | 1450 | 
| 1429   String toString() => "${enclosingElement.toString()}.${name.slowToString()}"; | 1451   String toString() => "${enclosingElement.toString()}.${name.slowToString()}"; | 
| 1430 | 1452 | 
| 1431   TypeVariableElement cloneTo(Element enclosing, DiagnosticListener listener) { | 1453   TypeVariableElement cloneTo(Element enclosing, DiagnosticListener listener) { | 
| 1432     TypeVariableElement result = | 1454     TypeVariableElement result = | 
| 1433         new TypeVariableElement(name, enclosing, node, type, bound); | 1455         new TypeVariableElement(name, enclosing, node, type, bound); | 
| 1434     return result; | 1456     return result; | 
| 1435   } | 1457   } | 
| 1436 } | 1458 } | 
| OLD | NEW | 
|---|