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

Side by Side Diff: pkg/compiler/lib/src/kernel/accessors.dart

Issue 2265383002: Copy Rasta visitor to dart2js. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 3 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 unified diff | Download patch
« no previous file with comments | « no previous file | pkg/compiler/lib/src/kernel/error.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // BSD-style license that can be found in the LICENSE.md file.
4
5 import 'package:kernel/ast.dart' as ir;
6 import 'package:kernel/frontend/accessors.dart' as ir_accessors;
7
8 import 'kernel.dart' show Kernel;
9 import 'unresolved.dart' show UnresolvedVisitor;
10
11 export 'package:kernel/frontend/accessors.dart' show Accessor;
12
13 class TopLevelStaticAccessor extends ir_accessors.StaticAccessor {
14 final UnresolvedVisitor builder;
15
16 /// Name of the property attempted to be accessed, used to generate an
17 /// error if unresolved.
18 final String name;
19
20 Kernel get kernel => builder.kernel;
21
22 TopLevelStaticAccessor(
23 this.builder,
24 this.name,
25 ir.Member readTarget,
26 ir.Member writeTarget)
27 : super(readTarget, writeTarget);
28
29 @override
30 makeInvalidRead() {
31 return builder.buildThrowNoSuchMethodError(
32 kernel.getUnresolvedTopLevelGetterBuilder(),
33 new ir.NullLiteral(),
34 name,
35 new ir.Arguments.empty());
36 }
37
38 @override
39 makeInvalidWrite(ir.Expression value) {
40 return builder.buildThrowNoSuchMethodError(
41 kernel.getUnresolvedTopLevelSetterBuilder(),
42 new ir.NullLiteral(),
43 name,
44 new ir.Arguments(<ir.Expression>[value]));
45 }
46 }
47
48 class ClassStaticAccessor extends ir_accessors.StaticAccessor {
49 final RastaUnresolved builder;
Siggi Cherem (dart-lang) 2016/08/22 22:30:15 rename to UnresolvedVisitor? (same below)?
50
51 /// Name of the property attempted to be accessed, used to generate an
52 /// error if unresolved.
53 final String name;
54
55 Kernel get kernel => builder.kernel;
56
57 ClassStaticAccessor(this.builder, this.name,
58 ir.Member readTarget, ir.Member writeTarget)
59 : super(readTarget, writeTarget);
60
61 @override
62 makeInvalidRead() {
63 return builder.buildThrowNoSuchMethodError(
64 kernel.getUnresolvedStaticGetterBuilder(),
65 new ir.NullLiteral(),
66 name,
67 new ir.Arguments.empty());
68 }
69
70 @override
71 makeInvalidWrite(ir.Expression value) {
72 return builder.buildThrowNoSuchMethodError(
73 kernel.getUnresolvedStaticSetterBuilder(),
74 new ir.NullLiteral(),
75 name,
76 new ir.Arguments(<ir.Expression>[value]));
77 }
78 }
79
80 class SuperPropertyAccessor extends ir_accessors.SuperPropertyAccessor {
81 final RastaUnresolved builder;
82
83 /// Name of the property attempted to be accessed, used to generate an
84 /// error if unresolved.
85 final String name;
86
87 SuperPropertyAccessor(
88 this.builder,
89 this.name,
90 ir.Member readTarget,
91 ir.Member writeTarget)
92 : super(readTarget, writeTarget);
93
94 @override
95 makeInvalidRead() {
96 // TODO(asgerf): Technically, we should invoke 'super.noSuchMethod' for
97 // this and the other invalid super cases.
98 return builder.buildThrowUnresolvedSuperGetter(name);
99 }
100
101 @override
102 makeInvalidWrite(ir.Expression value) {
103 return builder.buildThrowUnresolvedSuperSetter(name, value);
104 }
105 }
106
107 class SuperIndexAccessor extends ir_accessors.SuperIndexAccessor {
108 final RastaUnresolved builder;
109
110 Kernel get kernel => builder.kernel;
111
112 SuperIndexAccessor(
113 this.builder,
114 ir.Expression index,
115 ir.Member readTarget,
116 ir.Member writeTarget)
117 : super(index, readTarget, writeTarget);
118
119 @override
120 makeInvalidRead() {
121 return builder.buildThrowNoSuchMethodError(
122 kernel.getUnresolvedSuperMethodBuilder(),
123 new ir.ThisExpression(),
124 '[]',
125 new ir.Arguments(<ir.Expression>[indexAccess()]));
126 }
127
128 @override
129 makeInvalidWrite(ir.Expression value) {
130 return builder.buildThrowNoSuchMethodError(
131 kernel.getUnresolvedSuperMethodBuilder(),
132 new ir.ThisExpression(),
133 '[]=',
134 new ir.Arguments(<ir.Expression>[indexAccess(), value]));
135 }
136 }
OLDNEW
« no previous file with comments | « no previous file | pkg/compiler/lib/src/kernel/error.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698