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

Side by Side Diff: pkg/front_end/lib/src/fasta/kernel/fasta_accessors.dart

Issue 3004923002: Rename front end shadow classes from "Kernel..." to "Shadow...". (Closed)
Patch Set: Created 3 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
OLDNEW
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 file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library fasta.fasta_accessors; 5 library fasta.fasta_accessors;
6 6
7 import 'package:kernel/ast.dart' 7 import 'package:kernel/ast.dart'
8 hide InvalidExpression, InvalidInitializer, InvalidStatement; 8 hide InvalidExpression, InvalidInitializer, InvalidStatement;
9 9
10 import '../../scanner/token.dart' show Token; 10 import '../../scanner/token.dart' show Token;
(...skipping 27 matching lines...) Expand all
38 show 38 show
39 Builder, 39 Builder,
40 KernelClassBuilder, 40 KernelClassBuilder,
41 KernelInvalidTypeBuilder, 41 KernelInvalidTypeBuilder,
42 LibraryBuilder, 42 LibraryBuilder,
43 PrefixBuilder, 43 PrefixBuilder,
44 TypeDeclarationBuilder; 44 TypeDeclarationBuilder;
45 45
46 import 'kernel_shadow_ast.dart' 46 import 'kernel_shadow_ast.dart'
47 show 47 show
48 KernelArguments, 48 ShadowArguments,
49 KernelComplexAssignment, 49 ShadowComplexAssignment,
50 KernelIllegalAssignment, 50 ShadowIllegalAssignment,
51 KernelIndexAssign, 51 ShadowIndexAssign,
52 KernelPropertyAssign, 52 ShadowPropertyAssign,
53 KernelStaticAssignment, 53 ShadowStaticAssignment,
54 KernelThisExpression, 54 ShadowThisExpression,
55 KernelTypeLiteral, 55 ShadowTypeLiteral,
56 KernelVariableAssignment; 56 ShadowVariableAssignment;
57 57
58 import 'utils.dart' show offsetForToken; 58 import 'utils.dart' show offsetForToken;
59 59
60 abstract class BuilderHelper { 60 abstract class BuilderHelper {
61 LibraryBuilder get library; 61 LibraryBuilder get library;
62 62
63 Uri get uri; 63 Uri get uri;
64 64
65 TypePromoter get typePromoter; 65 TypePromoter get typePromoter;
66 66
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 Expression makeInvalidRead() { 158 Expression makeInvalidRead() {
159 return buildThrowNoSuchMethodError( 159 return buildThrowNoSuchMethodError(
160 new NullLiteral()..fileOffset = offsetForToken(token), 160 new NullLiteral()..fileOffset = offsetForToken(token),
161 new Arguments.empty(), 161 new Arguments.empty(),
162 isGetter: true); 162 isGetter: true);
163 } 163 }
164 164
165 Expression makeInvalidWrite(Expression value) { 165 Expression makeInvalidWrite(Expression value) {
166 return buildThrowNoSuchMethodError( 166 return buildThrowNoSuchMethodError(
167 new NullLiteral()..fileOffset = offsetForToken(token), 167 new NullLiteral()..fileOffset = offsetForToken(token),
168 new KernelArguments(<Expression>[value]), 168 new ShadowArguments(<Expression>[value]),
169 isSetter: true); 169 isSetter: true);
170 } 170 }
171 171
172 /* Expression | FastaAccessor | Initializer */ doInvocation( 172 /* Expression | FastaAccessor | Initializer */ doInvocation(
173 int offset, Arguments arguments); 173 int offset, Arguments arguments);
174 174
175 /* Expression | FastaAccessor */ buildPropertyAccess( 175 /* Expression | FastaAccessor */ buildPropertyAccess(
176 IncompleteSend send, int operatorOffset, bool isNullAware) { 176 IncompleteSend send, int operatorOffset, bool isNullAware) {
177 if (send is SendAccessor) { 177 if (send is SendAccessor) {
178 return helper.buildMethodInvocation(buildSimpleRead(), send.name, 178 return helper.buildMethodInvocation(buildSimpleRead(), send.name,
(...skipping 21 matching lines...) Expand all
200 arguments, offset ?? offsetForToken(this.token), 200 arguments, offset ?? offsetForToken(this.token),
201 isGetter: isGetter, 201 isGetter: isGetter,
202 isSetter: isSetter, 202 isSetter: isSetter,
203 isSuper: isSuper, 203 isSuper: isSuper,
204 isStatic: isStatic); 204 isStatic: isStatic);
205 } 205 }
206 206
207 bool get isThisPropertyAccessor => false; 207 bool get isThisPropertyAccessor => false;
208 208
209 @override 209 @override
210 KernelComplexAssignment startComplexAssignment(Expression rhs) => 210 ShadowComplexAssignment startComplexAssignment(Expression rhs) =>
211 new KernelIllegalAssignment(rhs); 211 new ShadowIllegalAssignment(rhs);
212 } 212 }
213 213
214 abstract class ErrorAccessor implements FastaAccessor { 214 abstract class ErrorAccessor implements FastaAccessor {
215 /// Pass [arguments] that must be evaluated before throwing an error. At 215 /// Pass [arguments] that must be evaluated before throwing an error. At
216 /// most one of [isGetter] and [isSetter] should be true and they're passed 216 /// most one of [isGetter] and [isSetter] should be true and they're passed
217 /// to [BuilderHelper.buildThrowNoSuchMethodError] if it is used. 217 /// to [BuilderHelper.buildThrowNoSuchMethodError] if it is used.
218 Expression buildError(Arguments arguments, 218 Expression buildError(Arguments arguments,
219 {bool isGetter: false, bool isSetter: false, int offset}); 219 {bool isGetter: false, bool isSetter: false, int offset});
220 220
221 Name get name => unsupported("name", offsetForToken(token), uri); 221 Name get name => unsupported("name", offsetForToken(token), uri);
(...skipping 26 matching lines...) Expand all
248 bool isGetter: false, 248 bool isGetter: false,
249 bool isSetter: false, 249 bool isSetter: false,
250 bool isStatic: false, 250 bool isStatic: false,
251 String name, 251 String name,
252 int offset}) { 252 int offset}) {
253 return this; 253 return this;
254 } 254 }
255 255
256 @override 256 @override
257 Expression buildAssignment(Expression value, {bool voidContext: false}) { 257 Expression buildAssignment(Expression value, {bool voidContext: false}) {
258 return buildError(new KernelArguments(<Expression>[value]), isSetter: true); 258 return buildError(new ShadowArguments(<Expression>[value]), isSetter: true);
259 } 259 }
260 260
261 @override 261 @override
262 Expression buildCompoundAssignment(Name binaryOperator, Expression value, 262 Expression buildCompoundAssignment(Name binaryOperator, Expression value,
263 {int offset: TreeNode.noOffset, 263 {int offset: TreeNode.noOffset,
264 bool voidContext: false, 264 bool voidContext: false,
265 Procedure interfaceTarget, 265 Procedure interfaceTarget,
266 bool isPreIncDec: false}) { 266 bool isPreIncDec: false}) {
267 return buildError(new KernelArguments(<Expression>[value]), isGetter: true); 267 return buildError(new ShadowArguments(<Expression>[value]), isGetter: true);
268 } 268 }
269 269
270 @override 270 @override
271 Expression buildPrefixIncrement(Name binaryOperator, 271 Expression buildPrefixIncrement(Name binaryOperator,
272 {int offset: TreeNode.noOffset, 272 {int offset: TreeNode.noOffset,
273 bool voidContext: false, 273 bool voidContext: false,
274 Procedure interfaceTarget}) { 274 Procedure interfaceTarget}) {
275 return buildError(new KernelArguments(<Expression>[new IntLiteral(1)]), 275 return buildError(new ShadowArguments(<Expression>[new IntLiteral(1)]),
276 isGetter: true); 276 isGetter: true);
277 } 277 }
278 278
279 @override 279 @override
280 Expression buildPostfixIncrement(Name binaryOperator, 280 Expression buildPostfixIncrement(Name binaryOperator,
281 {int offset: TreeNode.noOffset, 281 {int offset: TreeNode.noOffset,
282 bool voidContext: false, 282 bool voidContext: false,
283 Procedure interfaceTarget}) { 283 Procedure interfaceTarget}) {
284 return buildError(new KernelArguments(<Expression>[new IntLiteral(1)]), 284 return buildError(new ShadowArguments(<Expression>[new IntLiteral(1)]),
285 isGetter: true); 285 isGetter: true);
286 } 286 }
287 287
288 @override 288 @override
289 Expression buildNullAwareAssignment( 289 Expression buildNullAwareAssignment(
290 Expression value, DartType type, int offset, 290 Expression value, DartType type, int offset,
291 {bool voidContext: false}) { 291 {bool voidContext: false}) {
292 return buildError(new KernelArguments(<Expression>[value]), isSetter: true); 292 return buildError(new ShadowArguments(<Expression>[value]), isSetter: true);
293 } 293 }
294 294
295 @override 295 @override
296 Expression buildSimpleRead() => 296 Expression buildSimpleRead() =>
297 buildError(new Arguments.empty(), isGetter: true); 297 buildError(new Arguments.empty(), isGetter: true);
298 298
299 @override 299 @override
300 Expression makeInvalidRead() => 300 Expression makeInvalidRead() =>
301 buildError(new Arguments.empty(), isGetter: true); 301 buildError(new Arguments.empty(), isGetter: true);
302 302
303 @override 303 @override
304 Expression makeInvalidWrite(Expression value) { 304 Expression makeInvalidWrite(Expression value) {
305 return buildError(new KernelArguments(<Expression>[value]), isSetter: true); 305 return buildError(new ShadowArguments(<Expression>[value]), isSetter: true);
306 } 306 }
307 } 307 }
308 308
309 class ThisAccessor extends FastaAccessor { 309 class ThisAccessor extends FastaAccessor {
310 final BuilderHelper helper; 310 final BuilderHelper helper;
311 311
312 final Token token; 312 final Token token;
313 313
314 final bool isInitializer; 314 final bool isInitializer;
315 315
316 final bool isSuper; 316 final bool isSuper;
317 317
318 ThisAccessor(this.helper, this.token, this.isInitializer, 318 ThisAccessor(this.helper, this.token, this.isInitializer,
319 {this.isSuper: false}); 319 {this.isSuper: false});
320 320
321 String get plainNameForRead { 321 String get plainNameForRead {
322 return unsupported("${isSuper ? 'super' : 'this'}.plainNameForRead", 322 return unsupported("${isSuper ? 'super' : 'this'}.plainNameForRead",
323 offsetForToken(token), uri); 323 offsetForToken(token), uri);
324 } 324 }
325 325
326 Expression buildSimpleRead() { 326 Expression buildSimpleRead() {
327 if (!isSuper) { 327 if (!isSuper) {
328 return new KernelThisExpression(); 328 return new ShadowThisExpression();
329 } else { 329 } else {
330 return helper.deprecated_buildCompileTimeError( 330 return helper.deprecated_buildCompileTimeError(
331 "Can't use `super` as an expression.", offsetForToken(token)); 331 "Can't use `super` as an expression.", offsetForToken(token));
332 } 332 }
333 } 333 }
334 334
335 @override 335 @override
336 Initializer buildFieldInitializer(Map<String, int> initializedFields) { 336 Initializer buildFieldInitializer(Map<String, int> initializedFields) {
337 String keyword = isSuper ? "super" : "this"; 337 String keyword = isSuper ? "super" : "this";
338 int offset = offsetForToken(token); 338 int offset = offsetForToken(token);
(...skipping 10 matching lines...) Expand all
349 helper.deprecated_addCompileTimeError( 349 helper.deprecated_addCompileTimeError(
350 operatorOffset, "Expected '.'\nTry removing '?'."); 350 operatorOffset, "Expected '.'\nTry removing '?'.");
351 } 351 }
352 return buildConstructorInitializer( 352 return buildConstructorInitializer(
353 offsetForToken(send.token), send.name, send.arguments); 353 offsetForToken(send.token), send.name, send.arguments);
354 } 354 }
355 if (send is SendAccessor) { 355 if (send is SendAccessor) {
356 // Notice that 'this' or 'super' can't be null. So we can ignore the 356 // Notice that 'this' or 'super' can't be null. So we can ignore the
357 // value of [isNullAware]. 357 // value of [isNullAware].
358 MethodInvocation result = helper.buildMethodInvocation( 358 MethodInvocation result = helper.buildMethodInvocation(
359 new KernelThisExpression(), 359 new ShadowThisExpression(),
360 send.name, 360 send.name,
361 send.arguments, 361 send.arguments,
362 offsetForToken(send.token)); 362 offsetForToken(send.token));
363 return isSuper ? helper.toSuperMethodInvocation(result) : result; 363 return isSuper ? helper.toSuperMethodInvocation(result) : result;
364 } else { 364 } else {
365 if (isSuper) { 365 if (isSuper) {
366 Member getter = helper.lookupSuperMember(send.name); 366 Member getter = helper.lookupSuperMember(send.name);
367 Member setter = helper.lookupSuperMember(send.name, isSetter: true); 367 Member setter = helper.lookupSuperMember(send.name, isSetter: true);
368 return new SuperPropertyAccessor( 368 return new SuperPropertyAccessor(
369 helper, send.token, send.name, getter, setter); 369 helper, send.token, send.name, getter, setter);
370 } else { 370 } else {
371 return new ThisPropertyAccessor( 371 return new ThisPropertyAccessor(
372 helper, send.token, send.name, null, null); 372 helper, send.token, send.name, null, null);
373 } 373 }
374 } 374 }
375 } 375 }
376 376
377 doInvocation(int offset, Arguments arguments) { 377 doInvocation(int offset, Arguments arguments) {
378 if (isInitializer) { 378 if (isInitializer) {
379 return buildConstructorInitializer(offset, new Name(""), arguments); 379 return buildConstructorInitializer(offset, new Name(""), arguments);
380 } else { 380 } else {
381 return helper.buildMethodInvocation( 381 return helper.buildMethodInvocation(
382 new KernelThisExpression(), callName, arguments, offset, 382 new ShadowThisExpression(), callName, arguments, offset,
383 isImplicitCall: true); 383 isImplicitCall: true);
384 } 384 }
385 } 385 }
386 386
387 Initializer buildConstructorInitializer( 387 Initializer buildConstructorInitializer(
388 int offset, Name name, Arguments arguments) { 388 int offset, Name name, Arguments arguments) {
389 Constructor constructor = helper.lookupConstructor(name, isSuper: isSuper); 389 Constructor constructor = helper.lookupConstructor(name, isSuper: isSuper);
390 if (constructor == null || 390 if (constructor == null ||
391 !helper.checkArguments( 391 !helper.checkArguments(
392 constructor.function, arguments, <TypeParameter>[])) { 392 constructor.function, arguments, <TypeParameter>[])) {
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
656 Procedure setter) { 656 Procedure setter) {
657 if (receiver is ThisExpression) { 657 if (receiver is ThisExpression) {
658 return new ThisIndexAccessor(helper, token, index, getter, setter); 658 return new ThisIndexAccessor(helper, token, index, getter, setter);
659 } else { 659 } else {
660 return new IndexAccessor.internal( 660 return new IndexAccessor.internal(
661 helper, token, receiver, index, getter, setter); 661 helper, token, receiver, index, getter, setter);
662 } 662 }
663 } 663 }
664 664
665 @override 665 @override
666 KernelComplexAssignment startComplexAssignment(Expression rhs) => 666 ShadowComplexAssignment startComplexAssignment(Expression rhs) =>
667 new KernelIndexAssign(receiver, index, rhs); 667 new ShadowIndexAssign(receiver, index, rhs);
668 } 668 }
669 669
670 class PropertyAccessor extends kernel.PropertyAccessor with FastaAccessor { 670 class PropertyAccessor extends kernel.PropertyAccessor with FastaAccessor {
671 final BuilderHelper helper; 671 final BuilderHelper helper;
672 672
673 PropertyAccessor.internal(this.helper, Token token, Expression receiver, 673 PropertyAccessor.internal(this.helper, Token token, Expression receiver,
674 Name name, Member getter, Member setter) 674 Name name, Member getter, Member setter)
675 : super.internal(helper, receiver, name, getter, setter, token); 675 : super.internal(helper, receiver, name, getter, setter, token);
676 676
677 String get plainNameForRead => name.name; 677 String get plainNameForRead => name.name;
(...skipping 19 matching lines...) Expand all
697 } else { 697 } else {
698 return isNullAware 698 return isNullAware
699 ? new NullAwarePropertyAccessor( 699 ? new NullAwarePropertyAccessor(
700 helper, token, receiver, name, getter, setter, null) 700 helper, token, receiver, name, getter, setter, null)
701 : new PropertyAccessor.internal( 701 : new PropertyAccessor.internal(
702 helper, token, receiver, name, getter, setter); 702 helper, token, receiver, name, getter, setter);
703 } 703 }
704 } 704 }
705 705
706 @override 706 @override
707 KernelComplexAssignment startComplexAssignment(Expression rhs) => 707 ShadowComplexAssignment startComplexAssignment(Expression rhs) =>
708 new KernelPropertyAssign(receiver, rhs); 708 new ShadowPropertyAssign(receiver, rhs);
709 } 709 }
710 710
711 class StaticAccessor extends kernel.StaticAccessor with FastaAccessor { 711 class StaticAccessor extends kernel.StaticAccessor with FastaAccessor {
712 StaticAccessor( 712 StaticAccessor(
713 BuilderHelper helper, Token token, Member readTarget, Member writeTarget) 713 BuilderHelper helper, Token token, Member readTarget, Member writeTarget)
714 : super(helper, readTarget, writeTarget, token) { 714 : super(helper, readTarget, writeTarget, token) {
715 assert(readTarget != null || writeTarget != null); 715 assert(readTarget != null || writeTarget != null);
716 } 716 }
717 717
718 factory StaticAccessor.fromBuilder(BuilderHelper helper, Builder builder, 718 factory StaticAccessor.fromBuilder(BuilderHelper helper, Builder builder,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 isImplicitCall: true); 753 isImplicitCall: true);
754 } else { 754 } else {
755 return helper.buildStaticInvocation(readTarget, arguments) 755 return helper.buildStaticInvocation(readTarget, arguments)
756 ..fileOffset = offset; 756 ..fileOffset = offset;
757 } 757 }
758 } 758 }
759 759
760 toString() => "StaticAccessor()"; 760 toString() => "StaticAccessor()";
761 761
762 @override 762 @override
763 KernelComplexAssignment startComplexAssignment(Expression rhs) => 763 ShadowComplexAssignment startComplexAssignment(Expression rhs) =>
764 new KernelStaticAssignment(rhs); 764 new ShadowStaticAssignment(rhs);
765 } 765 }
766 766
767 class SuperPropertyAccessor extends kernel.SuperPropertyAccessor 767 class SuperPropertyAccessor extends kernel.SuperPropertyAccessor
768 with FastaAccessor { 768 with FastaAccessor {
769 SuperPropertyAccessor(BuilderHelper helper, Token token, Name name, 769 SuperPropertyAccessor(BuilderHelper helper, Token token, Name name,
770 Member getter, Member setter) 770 Member getter, Member setter)
771 : super(helper, name, getter, setter, token); 771 : super(helper, name, getter, setter, token);
772 772
773 String get plainNameForRead => name.name; 773 String get plainNameForRead => name.name;
774 774
(...skipping 12 matching lines...) Expand all
787 } else { 787 } else {
788 // TODO(ahe): This could be something like "super.property(...)" where 788 // TODO(ahe): This could be something like "super.property(...)" where
789 // property is a setter. 789 // property is a setter.
790 return unhandled("${getter.runtimeType}", "doInvocation", offset, uri); 790 return unhandled("${getter.runtimeType}", "doInvocation", offset, uri);
791 } 791 }
792 } 792 }
793 793
794 toString() => "SuperPropertyAccessor()"; 794 toString() => "SuperPropertyAccessor()";
795 795
796 @override 796 @override
797 KernelComplexAssignment startComplexAssignment(Expression rhs) => 797 ShadowComplexAssignment startComplexAssignment(Expression rhs) =>
798 new KernelPropertyAssign(null, rhs, isSuper: true); 798 new ShadowPropertyAssign(null, rhs, isSuper: true);
799 } 799 }
800 800
801 class ThisIndexAccessor extends kernel.ThisIndexAccessor with FastaAccessor { 801 class ThisIndexAccessor extends kernel.ThisIndexAccessor with FastaAccessor {
802 ThisIndexAccessor(BuilderHelper helper, Token token, Expression index, 802 ThisIndexAccessor(BuilderHelper helper, Token token, Expression index,
803 Procedure getter, Procedure setter) 803 Procedure getter, Procedure setter)
804 : super(helper, index, getter, setter, token); 804 : super(helper, index, getter, setter, token);
805 805
806 String get plainNameForRead => "[]"; 806 String get plainNameForRead => "[]";
807 807
808 String get plainNameForWrite => "[]="; 808 String get plainNameForWrite => "[]=";
809 809
810 Expression doInvocation(int offset, Arguments arguments) { 810 Expression doInvocation(int offset, Arguments arguments) {
811 return helper.buildMethodInvocation( 811 return helper.buildMethodInvocation(
812 buildSimpleRead(), callName, arguments, offset, 812 buildSimpleRead(), callName, arguments, offset,
813 isImplicitCall: true); 813 isImplicitCall: true);
814 } 814 }
815 815
816 toString() => "ThisIndexAccessor()"; 816 toString() => "ThisIndexAccessor()";
817 817
818 @override 818 @override
819 KernelComplexAssignment startComplexAssignment(Expression rhs) => 819 ShadowComplexAssignment startComplexAssignment(Expression rhs) =>
820 new KernelIndexAssign(null, index, rhs); 820 new ShadowIndexAssign(null, index, rhs);
821 } 821 }
822 822
823 class SuperIndexAccessor extends kernel.SuperIndexAccessor with FastaAccessor { 823 class SuperIndexAccessor extends kernel.SuperIndexAccessor with FastaAccessor {
824 SuperIndexAccessor(BuilderHelper helper, Token token, Expression index, 824 SuperIndexAccessor(BuilderHelper helper, Token token, Expression index,
825 Member getter, Member setter) 825 Member getter, Member setter)
826 : super(helper, index, getter, setter, token); 826 : super(helper, index, getter, setter, token);
827 827
828 String get plainNameForRead => "[]"; 828 String get plainNameForRead => "[]";
829 829
830 String get plainNameForWrite => "[]="; 830 String get plainNameForWrite => "[]=";
831 831
832 Expression doInvocation(int offset, Arguments arguments) { 832 Expression doInvocation(int offset, Arguments arguments) {
833 return helper.buildMethodInvocation( 833 return helper.buildMethodInvocation(
834 buildSimpleRead(), callName, arguments, offset, 834 buildSimpleRead(), callName, arguments, offset,
835 isImplicitCall: true); 835 isImplicitCall: true);
836 } 836 }
837 837
838 toString() => "SuperIndexAccessor()"; 838 toString() => "SuperIndexAccessor()";
839 839
840 @override 840 @override
841 KernelComplexAssignment startComplexAssignment(Expression rhs) => 841 ShadowComplexAssignment startComplexAssignment(Expression rhs) =>
842 new KernelIndexAssign(null, index, rhs, isSuper: true); 842 new ShadowIndexAssign(null, index, rhs, isSuper: true);
843 } 843 }
844 844
845 class ThisPropertyAccessor extends kernel.ThisPropertyAccessor 845 class ThisPropertyAccessor extends kernel.ThisPropertyAccessor
846 with FastaAccessor { 846 with FastaAccessor {
847 final BuilderHelper helper; 847 final BuilderHelper helper;
848 848
849 ThisPropertyAccessor( 849 ThisPropertyAccessor(
850 this.helper, Token token, Name name, Member getter, Member setter) 850 this.helper, Token token, Name name, Member getter, Member setter)
851 : super(helper, name, getter, setter, token); 851 : super(helper, name, getter, setter, token);
852 852
853 String get plainNameForRead => name.name; 853 String get plainNameForRead => name.name;
854 854
855 bool get isThisPropertyAccessor => true; 855 bool get isThisPropertyAccessor => true;
856 856
857 Expression doInvocation(int offset, Arguments arguments) { 857 Expression doInvocation(int offset, Arguments arguments) {
858 Member interfaceTarget = getter; 858 Member interfaceTarget = getter;
859 if (interfaceTarget is Field) { 859 if (interfaceTarget is Field) {
860 // TODO(ahe): In strong mode we should probably rewrite this to 860 // TODO(ahe): In strong mode we should probably rewrite this to
861 // `this.name.call(arguments)`. 861 // `this.name.call(arguments)`.
862 interfaceTarget = null; 862 interfaceTarget = null;
863 } 863 }
864 return helper.buildMethodInvocation( 864 return helper.buildMethodInvocation(
865 new KernelThisExpression(), name, arguments, offset); 865 new ShadowThisExpression(), name, arguments, offset);
866 } 866 }
867 867
868 toString() => "ThisPropertyAccessor()"; 868 toString() => "ThisPropertyAccessor()";
869 869
870 @override 870 @override
871 KernelComplexAssignment startComplexAssignment(Expression rhs) => 871 ShadowComplexAssignment startComplexAssignment(Expression rhs) =>
872 new KernelPropertyAssign(null, rhs); 872 new ShadowPropertyAssign(null, rhs);
873 } 873 }
874 874
875 class NullAwarePropertyAccessor extends kernel.NullAwarePropertyAccessor 875 class NullAwarePropertyAccessor extends kernel.NullAwarePropertyAccessor
876 with FastaAccessor { 876 with FastaAccessor {
877 final BuilderHelper helper; 877 final BuilderHelper helper;
878 878
879 NullAwarePropertyAccessor(this.helper, Token token, Expression receiver, 879 NullAwarePropertyAccessor(this.helper, Token token, Expression receiver,
880 Name name, Member getter, Member setter, DartType type) 880 Name name, Member getter, Member setter, DartType type)
881 : super(helper, receiver, name, getter, setter, type, token); 881 : super(helper, receiver, name, getter, setter, type, token);
882 882
883 String get plainNameForRead => name.name; 883 String get plainNameForRead => name.name;
884 884
885 Expression doInvocation(int offset, Arguments arguments) { 885 Expression doInvocation(int offset, Arguments arguments) {
886 return unimplemented("doInvocation", offset, uri); 886 return unimplemented("doInvocation", offset, uri);
887 } 887 }
888 888
889 toString() => "NullAwarePropertyAccessor()"; 889 toString() => "NullAwarePropertyAccessor()";
890 890
891 @override 891 @override
892 KernelComplexAssignment startComplexAssignment(Expression rhs) => 892 ShadowComplexAssignment startComplexAssignment(Expression rhs) =>
893 new KernelPropertyAssign(receiverExpression, rhs); 893 new ShadowPropertyAssign(receiverExpression, rhs);
894 } 894 }
895 895
896 int adjustForImplicitCall(String name, int offset) { 896 int adjustForImplicitCall(String name, int offset) {
897 // Normally the offset is at the start of the token, but in this case, 897 // Normally the offset is at the start of the token, but in this case,
898 // because we insert a '.call', we want it at the end instead. 898 // because we insert a '.call', we want it at the end instead.
899 return offset + (name?.length ?? 0); 899 return offset + (name?.length ?? 0);
900 } 900 }
901 901
902 class VariableAccessor extends kernel.VariableAccessor with FastaAccessor { 902 class VariableAccessor extends kernel.VariableAccessor with FastaAccessor {
903 VariableAccessor( 903 VariableAccessor(
904 BuilderHelper helper, Token token, VariableDeclaration variable, 904 BuilderHelper helper, Token token, VariableDeclaration variable,
905 [DartType promotedType]) 905 [DartType promotedType])
906 : super(helper, variable, promotedType, token); 906 : super(helper, variable, promotedType, token);
907 907
908 String get plainNameForRead => variable.name; 908 String get plainNameForRead => variable.name;
909 909
910 Expression doInvocation(int offset, Arguments arguments) { 910 Expression doInvocation(int offset, Arguments arguments) {
911 return helper.buildMethodInvocation(buildSimpleRead(), callName, arguments, 911 return helper.buildMethodInvocation(buildSimpleRead(), callName, arguments,
912 adjustForImplicitCall(plainNameForRead, offset), 912 adjustForImplicitCall(plainNameForRead, offset),
913 isImplicitCall: true); 913 isImplicitCall: true);
914 } 914 }
915 915
916 toString() => "VariableAccessor()"; 916 toString() => "VariableAccessor()";
917 917
918 @override 918 @override
919 KernelComplexAssignment startComplexAssignment(Expression rhs) => 919 ShadowComplexAssignment startComplexAssignment(Expression rhs) =>
920 new KernelVariableAssignment(rhs); 920 new ShadowVariableAssignment(rhs);
921 } 921 }
922 922
923 class ReadOnlyAccessor extends kernel.ReadOnlyAccessor with FastaAccessor { 923 class ReadOnlyAccessor extends kernel.ReadOnlyAccessor with FastaAccessor {
924 final String plainNameForRead; 924 final String plainNameForRead;
925 925
926 ReadOnlyAccessor(BuilderHelper helper, Expression expression, 926 ReadOnlyAccessor(BuilderHelper helper, Expression expression,
927 this.plainNameForRead, Token token) 927 this.plainNameForRead, Token token)
928 : super(helper, expression, token); 928 : super(helper, expression, token);
929 929
930 Expression doInvocation(int offset, Arguments arguments) { 930 Expression doInvocation(int offset, Arguments arguments) {
(...skipping 27 matching lines...) Expand all
958 if (declaration is KernelInvalidTypeBuilder) { 958 if (declaration is KernelInvalidTypeBuilder) {
959 KernelInvalidTypeBuilder declaration = this.declaration; 959 KernelInvalidTypeBuilder declaration = this.declaration;
960 helper.library.addWarning( 960 helper.library.addWarning(
961 declaration.message, declaration.charOffset, declaration.fileUri); 961 declaration.message, declaration.charOffset, declaration.fileUri);
962 helper.warning(declaration.message, offset); 962 helper.warning(declaration.message, offset);
963 super.expression = new Throw( 963 super.expression = new Throw(
964 new StringLiteral(declaration.message.message) 964 new StringLiteral(declaration.message.message)
965 ..fileOffset = offsetForToken(token)) 965 ..fileOffset = offsetForToken(token))
966 ..fileOffset = offset; 966 ..fileOffset = offset;
967 } else { 967 } else {
968 super.expression = new KernelTypeLiteral( 968 super.expression = new ShadowTypeLiteral(
969 buildType(null, nonInstanceAccessIsError: true)) 969 buildType(null, nonInstanceAccessIsError: true))
970 ..fileOffset = offsetForToken(token); 970 ..fileOffset = offsetForToken(token);
971 } 971 }
972 } 972 }
973 return super.expression; 973 return super.expression;
974 } 974 }
975 975
976 Expression makeInvalidWrite(Expression value) { 976 Expression makeInvalidWrite(Expression value) {
977 return buildThrowNoSuchMethodError( 977 return buildThrowNoSuchMethodError(
978 new NullLiteral()..fileOffset = offsetForToken(token), 978 new NullLiteral()..fileOffset = offsetForToken(token),
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1057 offset ??= offsetForToken(this.token); 1057 offset ??= offsetForToken(this.token);
1058 return helper.throwNoSuchMethodError(new NullLiteral()..fileOffset = offset, 1058 return helper.throwNoSuchMethodError(new NullLiteral()..fileOffset = offset,
1059 plainNameForRead, arguments, offset, 1059 plainNameForRead, arguments, offset,
1060 isGetter: isGetter, isSetter: isSetter); 1060 isGetter: isGetter, isSetter: isSetter);
1061 } 1061 }
1062 } 1062 }
1063 1063
1064 bool isFieldOrGetter(Member member) { 1064 bool isFieldOrGetter(Member member) {
1065 return member is Field || (member is Procedure && member.isGetter); 1065 return member is Field || (member is Procedure && member.isGetter);
1066 } 1066 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/kernel/body_builder.dart ('k') | pkg/front_end/lib/src/fasta/kernel/frontend_accessors.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698