OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 /// Implementation of the element model used for deserialiation. | 5 /// Implementation of the element model used for deserialiation. |
6 /// | 6 /// |
7 /// These classes are created by [ElementDeserializer] triggered by the | 7 /// These classes are created by [ElementDeserializer] triggered by the |
8 /// [Deserializer]. | 8 /// [Deserializer]. |
9 | 9 |
10 library dart2js.serialization.modelz; | 10 library dart2js.serialization.modelz; |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 Element member = members.getElement(key); | 302 Element member = members.getElement(key); |
303 if (member != null) { | 303 if (member != null) { |
304 f(member); | 304 f(member); |
305 } | 305 } |
306 }); | 306 }); |
307 } | 307 } |
308 } | 308 } |
309 | 309 |
310 class AbstractFieldElementZ extends ElementZ implements AbstractFieldElement { | 310 class AbstractFieldElementZ extends ElementZ implements AbstractFieldElement { |
311 final String name; | 311 final String name; |
312 final FunctionElement getter; | 312 final GetterElementZ getter; |
313 final FunctionElement setter; | 313 final SetterElementZ setter; |
314 | 314 |
315 AbstractFieldElementZ(this.name, this.getter, this.setter); | 315 AbstractFieldElementZ(this.name, this.getter, this.setter) { |
| 316 if (getter != null) { |
| 317 getter.abstractField = this; |
| 318 getter.setter = setter; |
| 319 } |
| 320 if (setter != null) { |
| 321 setter.abstractField = this; |
| 322 setter.getter = getter; |
| 323 } |
| 324 } |
316 | 325 |
317 FunctionElement get _canonicalElement => getter != null ? getter : setter; | 326 FunctionElement get _canonicalElement => getter != null ? getter : setter; |
318 | 327 |
319 @override | 328 @override |
320 ElementKind get kind => ElementKind.ABSTRACT_FIELD; | 329 ElementKind get kind => ElementKind.ABSTRACT_FIELD; |
321 | 330 |
322 @override | 331 @override |
323 accept(ElementVisitor visitor, arg) { | 332 accept(ElementVisitor visitor, arg) { |
324 return visitor.visitAbstractFieldElement(this, arg); | 333 return visitor.visitAbstractFieldElement(this, arg); |
325 } | 334 } |
(...skipping 1016 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1342 MemberElementMixin | 1351 MemberElementMixin |
1343 implements MethodElement { | 1352 implements MethodElement { |
1344 FunctionElementZ(ObjectDecoder decoder) | 1353 FunctionElementZ(ObjectDecoder decoder) |
1345 : super(decoder); | 1354 : super(decoder); |
1346 | 1355 |
1347 @override | 1356 @override |
1348 ElementKind get kind => ElementKind.FUNCTION; | 1357 ElementKind get kind => ElementKind.FUNCTION; |
1349 | 1358 |
1350 @override | 1359 @override |
1351 accept(ElementVisitor visitor, arg) { | 1360 accept(ElementVisitor visitor, arg) { |
1352 return visitor.visitFunctionElement(this, arg); | 1361 return visitor.visitMethodElement(this, arg); |
1353 } | 1362 } |
1354 | 1363 |
1355 @override | 1364 @override |
1356 bool get isOperator => _decoder.getBool(Key.IS_OPERATOR); | 1365 bool get isOperator => _decoder.getBool(Key.IS_OPERATOR); |
1357 } | 1366 } |
1358 | 1367 |
1359 class TopLevelFunctionElementZ extends FunctionElementZ | 1368 class TopLevelFunctionElementZ extends FunctionElementZ |
1360 with LibraryMemberMixin { | 1369 with LibraryMemberMixin { |
1361 TopLevelFunctionElementZ(ObjectDecoder decoder) | 1370 TopLevelFunctionElementZ(ObjectDecoder decoder) |
1362 : super(decoder); | 1371 : super(decoder); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1415 AstElementMixin, | 1424 AstElementMixin, |
1416 ParametersMixin, | 1425 ParametersMixin, |
1417 FunctionTypedElementMixin, | 1426 FunctionTypedElementMixin, |
1418 TypedElementMixin | 1427 TypedElementMixin |
1419 implements LocalFunctionElement { | 1428 implements LocalFunctionElement { |
1420 LocalFunctionElementZ(ObjectDecoder decoder) | 1429 LocalFunctionElementZ(ObjectDecoder decoder) |
1421 : super(decoder); | 1430 : super(decoder); |
1422 | 1431 |
1423 @override | 1432 @override |
1424 accept(ElementVisitor visitor, arg) { | 1433 accept(ElementVisitor visitor, arg) { |
1425 return visitor.visitFunctionElement(this, arg); | 1434 return visitor.visitLocalFunctionElement(this, arg); |
1426 } | 1435 } |
1427 | 1436 |
1428 @override | 1437 @override |
1429 ElementKind get kind => ElementKind.FUNCTION; | 1438 ElementKind get kind => ElementKind.FUNCTION; |
1430 } | 1439 } |
1431 | 1440 |
1432 abstract class GetterElementZ extends DeserializedElementZ | 1441 abstract class GetterElementZ extends DeserializedElementZ |
1433 with AnalyzableElementMixin, | 1442 with AnalyzableElementMixin, |
1434 AstElementMixin, | 1443 AstElementMixin, |
1435 FunctionTypedElementMixin, | 1444 FunctionTypedElementMixin, |
1436 ParametersMixin, | 1445 ParametersMixin, |
1437 TypedElementMixin, | 1446 TypedElementMixin, |
1438 MemberElementMixin | 1447 MemberElementMixin |
1439 implements FunctionElement { | 1448 implements GetterElement { |
| 1449 |
| 1450 AbstractFieldElement abstractField; |
| 1451 SetterElement setter; |
1440 | 1452 |
1441 GetterElementZ(ObjectDecoder decoder) | 1453 GetterElementZ(ObjectDecoder decoder) |
1442 : super(decoder); | 1454 : super(decoder); |
1443 | 1455 |
1444 @override | 1456 @override |
1445 ElementKind get kind => ElementKind.GETTER; | 1457 ElementKind get kind => ElementKind.GETTER; |
1446 | 1458 |
1447 @override | 1459 @override |
1448 accept(ElementVisitor visitor, arg) { | 1460 accept(ElementVisitor visitor, arg) { |
1449 return visitor.visitFunctionElement(this, arg); | 1461 return visitor.visitGetterElement(this, arg); |
1450 } | 1462 } |
1451 } | 1463 } |
1452 | 1464 |
1453 class TopLevelGetterElementZ extends GetterElementZ with LibraryMemberMixin { | 1465 class TopLevelGetterElementZ extends GetterElementZ with LibraryMemberMixin { |
1454 TopLevelGetterElementZ(ObjectDecoder decoder) | 1466 TopLevelGetterElementZ(ObjectDecoder decoder) |
1455 : super(decoder); | 1467 : super(decoder); |
1456 } | 1468 } |
1457 | 1469 |
1458 class StaticGetterElementZ extends GetterElementZ | 1470 class StaticGetterElementZ extends GetterElementZ |
1459 with ClassMemberMixin, StaticMemberMixin { | 1471 with ClassMemberMixin, StaticMemberMixin { |
1460 StaticGetterElementZ(ObjectDecoder decoder) | 1472 StaticGetterElementZ(ObjectDecoder decoder) |
1461 : super(decoder); | 1473 : super(decoder); |
1462 } | 1474 } |
1463 | 1475 |
1464 class InstanceGetterElementZ extends GetterElementZ | 1476 class InstanceGetterElementZ extends GetterElementZ |
1465 with ClassMemberMixin, InstanceMemberMixin { | 1477 with ClassMemberMixin, InstanceMemberMixin { |
1466 InstanceGetterElementZ(ObjectDecoder decoder) | 1478 InstanceGetterElementZ(ObjectDecoder decoder) |
1467 : super(decoder); | 1479 : super(decoder); |
1468 } | 1480 } |
1469 | 1481 |
1470 abstract class SetterElementZ extends DeserializedElementZ | 1482 abstract class SetterElementZ extends DeserializedElementZ |
1471 with AnalyzableElementMixin, | 1483 with AnalyzableElementMixin, |
1472 AstElementMixin, | 1484 AstElementMixin, |
1473 FunctionTypedElementMixin, | 1485 FunctionTypedElementMixin, |
1474 ParametersMixin, | 1486 ParametersMixin, |
1475 TypedElementMixin, | 1487 TypedElementMixin, |
1476 MemberElementMixin | 1488 MemberElementMixin |
1477 implements FunctionElement { | 1489 implements SetterElement { |
| 1490 |
| 1491 AbstractFieldElement abstractField; |
| 1492 GetterElement getter; |
1478 | 1493 |
1479 SetterElementZ(ObjectDecoder decoder) | 1494 SetterElementZ(ObjectDecoder decoder) |
1480 : super(decoder); | 1495 : super(decoder); |
1481 | 1496 |
1482 @override | 1497 @override |
1483 ElementKind get kind => ElementKind.SETTER; | 1498 ElementKind get kind => ElementKind.SETTER; |
1484 | 1499 |
1485 @override | 1500 @override |
1486 accept(ElementVisitor visitor, arg) { | 1501 accept(ElementVisitor visitor, arg) { |
1487 return visitor.visitFunctionElement(this, arg); | 1502 return visitor.visitSetterElement(this, arg); |
1488 } | 1503 } |
1489 } | 1504 } |
1490 | 1505 |
1491 class TopLevelSetterElementZ extends SetterElementZ with LibraryMemberMixin { | 1506 class TopLevelSetterElementZ extends SetterElementZ with LibraryMemberMixin { |
1492 TopLevelSetterElementZ(ObjectDecoder decoder) | 1507 TopLevelSetterElementZ(ObjectDecoder decoder) |
1493 : super(decoder); | 1508 : super(decoder); |
1494 } | 1509 } |
1495 | 1510 |
1496 class StaticSetterElementZ extends SetterElementZ | 1511 class StaticSetterElementZ extends SetterElementZ |
1497 with ClassMemberMixin, StaticMemberMixin { | 1512 with ClassMemberMixin, StaticMemberMixin { |
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1947 } | 1962 } |
1948 | 1963 |
1949 @override | 1964 @override |
1950 ElementKind get kind => ElementKind.PREFIX; | 1965 ElementKind get kind => ElementKind.PREFIX; |
1951 | 1966 |
1952 @override | 1967 @override |
1953 Element lookupLocalMember(String memberName) { | 1968 Element lookupLocalMember(String memberName) { |
1954 return _unsupported('lookupLocalMember'); | 1969 return _unsupported('lookupLocalMember'); |
1955 } | 1970 } |
1956 } | 1971 } |
OLD | NEW |