OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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.md file. | 3 // BSD-style license that can be found in the LICENSE.md file. |
4 | 4 |
5 import 'package:kernel/ast.dart' as ir; | 5 import 'package:kernel/ast.dart' as ir; |
6 import 'package:kernel/frontend/accessors.dart' as ir_accessors; | 6 import 'package:kernel/frontend/accessors.dart' as ir_accessors; |
7 | 7 |
8 import 'kernel.dart' show Kernel; | 8 import 'kernel.dart' show Kernel; |
9 import 'unresolved.dart' show UnresolvedVisitor; | 9 import 'unresolved.dart' show UnresolvedVisitor; |
10 | 10 |
11 export 'package:kernel/frontend/accessors.dart' show Accessor; | 11 export 'package:kernel/frontend/accessors.dart' show Accessor; |
12 | 12 |
13 class TopLevelStaticAccessor extends ir_accessors.StaticAccessor { | 13 class TopLevelStaticAccessor extends ir_accessors.StaticAccessor { |
14 final UnresolvedVisitor builder; | 14 final UnresolvedVisitor builder; |
15 | 15 |
16 /// Name of the property attempted to be accessed, used to generate an | 16 /// Name of the property attempted to be accessed, used to generate an |
17 /// error if unresolved. | 17 /// error if unresolved. |
18 final String name; | 18 final String name; |
19 | 19 |
20 Kernel get kernel => builder.kernel; | 20 Kernel get kernel => builder.kernel; |
21 | 21 |
22 TopLevelStaticAccessor( | 22 TopLevelStaticAccessor( |
23 this.builder, | 23 this.builder, this.name, ir.Member readTarget, ir.Member writeTarget) |
24 this.name, | |
25 ir.Member readTarget, | |
26 ir.Member writeTarget) | |
27 : super(readTarget, writeTarget); | 24 : super(readTarget, writeTarget); |
28 | 25 |
29 @override | 26 @override |
30 makeInvalidRead() { | 27 makeInvalidRead() { |
31 return builder.buildThrowNoSuchMethodError( | 28 return builder.buildThrowNoSuchMethodError( |
32 kernel.getUnresolvedTopLevelGetterBuilder(), | 29 kernel.getUnresolvedTopLevelGetterBuilder(), |
33 new ir.NullLiteral(), | 30 new ir.NullLiteral(), |
34 name, | 31 name, |
35 new ir.Arguments.empty()); | 32 new ir.Arguments.empty()); |
36 } | 33 } |
(...skipping 10 matching lines...) Expand all Loading... |
47 | 44 |
48 class ClassStaticAccessor extends ir_accessors.StaticAccessor { | 45 class ClassStaticAccessor extends ir_accessors.StaticAccessor { |
49 final UnresolvedVisitor builder; | 46 final UnresolvedVisitor builder; |
50 | 47 |
51 /// Name of the property attempted to be accessed, used to generate an | 48 /// Name of the property attempted to be accessed, used to generate an |
52 /// error if unresolved. | 49 /// error if unresolved. |
53 final String name; | 50 final String name; |
54 | 51 |
55 Kernel get kernel => builder.kernel; | 52 Kernel get kernel => builder.kernel; |
56 | 53 |
57 ClassStaticAccessor(this.builder, this.name, | 54 ClassStaticAccessor( |
58 ir.Member readTarget, ir.Member writeTarget) | 55 this.builder, this.name, ir.Member readTarget, ir.Member writeTarget) |
59 : super(readTarget, writeTarget); | 56 : super(readTarget, writeTarget); |
60 | 57 |
61 @override | 58 @override |
62 makeInvalidRead() { | 59 makeInvalidRead() { |
63 return builder.buildThrowNoSuchMethodError( | 60 return builder.buildThrowNoSuchMethodError( |
64 kernel.getUnresolvedStaticGetterBuilder(), | 61 kernel.getUnresolvedStaticGetterBuilder(), |
65 new ir.NullLiteral(), | 62 new ir.NullLiteral(), |
66 name, | 63 name, |
67 new ir.Arguments.empty()); | 64 new ir.Arguments.empty()); |
68 } | 65 } |
69 | 66 |
70 @override | 67 @override |
71 makeInvalidWrite(ir.Expression value) { | 68 makeInvalidWrite(ir.Expression value) { |
72 return builder.buildThrowNoSuchMethodError( | 69 return builder.buildThrowNoSuchMethodError( |
73 kernel.getUnresolvedStaticSetterBuilder(), | 70 kernel.getUnresolvedStaticSetterBuilder(), |
74 new ir.NullLiteral(), | 71 new ir.NullLiteral(), |
75 name, | 72 name, |
76 new ir.Arguments(<ir.Expression>[value])); | 73 new ir.Arguments(<ir.Expression>[value])); |
77 } | 74 } |
78 } | 75 } |
79 | 76 |
80 class SuperPropertyAccessor extends ir_accessors.SuperPropertyAccessor { | 77 class SuperPropertyAccessor extends ir_accessors.SuperPropertyAccessor { |
81 final UnresolvedVisitor builder; | 78 final UnresolvedVisitor builder; |
82 | 79 |
83 /// Name of the property attempted to be accessed, used to generate an | 80 /// Name of the property attempted to be accessed, used to generate an |
84 /// error if unresolved. | 81 /// error if unresolved. |
85 final String name; | 82 final String name; |
86 | 83 |
87 SuperPropertyAccessor( | 84 SuperPropertyAccessor( |
88 this.builder, | 85 this.builder, this.name, ir.Member readTarget, ir.Member writeTarget) |
89 this.name, | |
90 ir.Member readTarget, | |
91 ir.Member writeTarget) | |
92 : super(readTarget, writeTarget); | 86 : super(readTarget, writeTarget); |
93 | 87 |
94 @override | 88 @override |
95 makeInvalidRead() { | 89 makeInvalidRead() { |
96 // TODO(asgerf): Technically, we should invoke 'super.noSuchMethod' for | 90 // TODO(asgerf): Technically, we should invoke 'super.noSuchMethod' for |
97 // this and the other invalid super cases. | 91 // this and the other invalid super cases. |
98 return builder.buildThrowUnresolvedSuperGetter(name); | 92 return builder.buildThrowUnresolvedSuperGetter(name); |
99 } | 93 } |
100 | 94 |
101 @override | 95 @override |
102 makeInvalidWrite(ir.Expression value) { | 96 makeInvalidWrite(ir.Expression value) { |
103 return builder.buildThrowUnresolvedSuperSetter(name, value); | 97 return builder.buildThrowUnresolvedSuperSetter(name, value); |
104 } | 98 } |
105 } | 99 } |
106 | 100 |
107 class SuperIndexAccessor extends ir_accessors.SuperIndexAccessor { | 101 class SuperIndexAccessor extends ir_accessors.SuperIndexAccessor { |
108 final UnresolvedVisitor builder; | 102 final UnresolvedVisitor builder; |
109 | 103 |
110 Kernel get kernel => builder.kernel; | 104 Kernel get kernel => builder.kernel; |
111 | 105 |
112 SuperIndexAccessor( | 106 SuperIndexAccessor(this.builder, ir.Expression index, ir.Member readTarget, |
113 this.builder, | |
114 ir.Expression index, | |
115 ir.Member readTarget, | |
116 ir.Member writeTarget) | 107 ir.Member writeTarget) |
117 : super(index, readTarget, writeTarget); | 108 : super(index, readTarget, writeTarget); |
118 | 109 |
119 @override | 110 @override |
120 makeInvalidRead() { | 111 makeInvalidRead() { |
121 return builder.buildThrowNoSuchMethodError( | 112 return builder.buildThrowNoSuchMethodError( |
122 kernel.getUnresolvedSuperMethodBuilder(), | 113 kernel.getUnresolvedSuperMethodBuilder(), |
123 new ir.ThisExpression(), | 114 new ir.ThisExpression(), |
124 '[]', | 115 '[]', |
125 new ir.Arguments(<ir.Expression>[indexAccess()])); | 116 new ir.Arguments(<ir.Expression>[indexAccess()])); |
126 } | 117 } |
127 | 118 |
128 @override | 119 @override |
129 makeInvalidWrite(ir.Expression value) { | 120 makeInvalidWrite(ir.Expression value) { |
130 return builder.buildThrowNoSuchMethodError( | 121 return builder.buildThrowNoSuchMethodError( |
131 kernel.getUnresolvedSuperMethodBuilder(), | 122 kernel.getUnresolvedSuperMethodBuilder(), |
132 new ir.ThisExpression(), | 123 new ir.ThisExpression(), |
133 '[]=', | 124 '[]=', |
134 new ir.Arguments(<ir.Expression>[indexAccess(), value])); | 125 new ir.Arguments(<ir.Expression>[indexAccess(), value])); |
135 } | 126 } |
136 } | 127 } |
OLD | NEW |