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

Side by Side Diff: pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart

Issue 1076793005: Fine-grain field, getter, setter, and function access in IrBuilder. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 dart2js.ir_builder_task; 5 library dart2js.ir_builder_task;
6 6
7 import '../closure.dart' as closurelib; 7 import '../closure.dart' as closurelib;
8 import '../closure.dart' hide ClosureScope; 8 import '../closure.dart' hide ClosureScope;
9 import '../constants/expressions.dart'; 9 import '../constants/expressions.dart';
10 import '../dart_types.dart'; 10 import '../dart_types.dart';
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 237
238 List<ir.Initializer> buildConstructorInitializers( 238 List<ir.Initializer> buildConstructorInitializers(
239 ast.FunctionExpression function, ConstructorElement element) { 239 ast.FunctionExpression function, ConstructorElement element) {
240 List<ir.Initializer> result = <ir.Initializer>[]; 240 List<ir.Initializer> result = <ir.Initializer>[];
241 FunctionSignature signature = element.functionSignature; 241 FunctionSignature signature = element.functionSignature;
242 242
243 void tryAddInitializingFormal(ParameterElement parameterElement) { 243 void tryAddInitializingFormal(ParameterElement parameterElement) {
244 if (parameterElement.isInitializingFormal) { 244 if (parameterElement.isInitializingFormal) {
245 InitializingFormalElement initializingFormal = parameterElement; 245 InitializingFormalElement initializingFormal = parameterElement;
246 withBuilder(irBuilder.makeInitializerBuilder(), () { 246 withBuilder(irBuilder.makeInitializerBuilder(), () {
247 ir.Primitive value = irBuilder.buildLocalGet(parameterElement); 247 ir.Primitive value =
248 irBuilder.buildLocalVariableGet(parameterElement);
248 result.add(irBuilder.makeFieldInitializer( 249 result.add(irBuilder.makeFieldInitializer(
249 initializingFormal.fieldElement, 250 initializingFormal.fieldElement,
250 irBuilder.makeRunnableBody(value))); 251 irBuilder.makeRunnableBody(value)));
251 }); 252 });
252 } 253 }
253 } 254 }
254 255
255 // TODO(sigurdm): Preserve initializing formals as initializing formals. 256 // TODO(sigurdm): Preserve initializing formals as initializing formals.
256 signature.orderedForEachParameter(tryAddInitializingFormal); 257 signature.orderedForEachParameter(tryAddInitializingFormal);
257 258
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 } 675 }
675 676
676 @override 677 @override
677 ir.Primitive handleLocalGet( 678 ir.Primitive handleLocalGet(
678 ast.Send node, 679 ast.Send node,
679 LocalElement element, 680 LocalElement element,
680 _) { 681 _) {
681 if (element.isConst) { 682 if (element.isConst) {
682 return translateConstant(node); 683 return translateConstant(node);
683 } 684 }
684 return irBuilder.buildLocalGet(element); 685 return irBuilder.buildLocalVariableGet(element);
685 } 686 }
686 687
687 @override 688 @override
689 ir.Primitive visitLocalFunctionGet(
690 ast.Send node,
691 LocalFunctionElement function,
692 _) {
693 return irBuilder.buildLocalFunctionGet(function);
694 }
695
696 @override
688 ir.Primitive handleStaticFieldGet( 697 ir.Primitive handleStaticFieldGet(
689 ast.Send node, 698 ast.Send node,
690 FieldElement field, 699 FieldElement field,
691 _) { 700 _) {
692 if (field.isConst) { 701 if (field.isConst) {
693 return translateConstant(node); 702 return translateConstant(node);
694 } 703 }
695 return irBuilder.buildStaticGet(field, 704 return irBuilder.buildStaticFieldGet(field,
696 sourceInformation: sourceInformationBuilder.buildGet(node)); 705 sourceInformation: sourceInformationBuilder.buildGet(node));
697 } 706 }
698 707
699 @override 708 @override
700 ir.Primitive handleStaticFunctionGet( 709 ir.Primitive handleStaticFunctionGet(
701 ast.Send node, 710 ast.Send node,
702 MethodElement function, 711 MethodElement function,
703 _) { 712 _) {
704 // TODO(karlklose): support foreign functions. 713 // TODO(karlklose): support foreign functions.
705 if (function.isForeign(compiler.backend)) { 714 if (function.isForeign(compiler.backend)) {
706 return giveup(node, 'handleStaticFunctionGet: foreign: $function'); 715 return giveup(node, 'handleStaticFunctionGet: foreign: $function');
707 } 716 }
708 return translateConstant(node); 717 return translateConstant(node);
709 } 718 }
710 719
711 @override 720 @override
712 ir.Primitive handleStaticGetterGet( 721 ir.Primitive handleStaticGetterGet(
713 ast.Send node, 722 ast.Send node,
714 FunctionElement getter, 723 FunctionElement getter,
715 _) { 724 _) {
716 return irBuilder.buildStaticInvocation(getter, 725 return irBuilder.buildStaticGetterGet(getter);
717 new Selector.getter(getter.name, getter.library), const []);
718 } 726 }
719 727
720 @override 728 @override
721 ir.Primitive visitSuperFieldGet( 729 ir.Primitive visitSuperFieldGet(
722 ast.Send node, 730 ast.Send node,
723 FieldElement field, 731 FieldElement field,
724 _) { 732 _) {
725 return irBuilder.buildSuperGet(field); 733 return irBuilder.buildSuperFieldGet(field);
726 } 734 }
727 735
728 @override 736 @override
729 ir.Primitive visitSuperGetterGet( 737 ir.Primitive visitSuperGetterGet(
730 ast.Send node, 738 ast.Send node,
731 FunctionElement getter, 739 FunctionElement getter,
732 _) { 740 _) {
733 return irBuilder.buildSuperGet(getter); 741 return irBuilder.buildSuperGetterGet(getter);
734 } 742 }
735 743
736 @override 744 @override
737 ir.Primitive visitSuperMethodGet( 745 ir.Primitive visitSuperMethodGet(
738 ast.Send node, 746 ast.Send node,
739 MethodElement method, 747 MethodElement method,
740 _) { 748 _) {
741 return irBuilder.buildSuperGet(method); 749 return irBuilder.buildSuperMethodGet(method);
742 } 750 }
743 751
744 @override 752 @override
745 ir.Primitive visitThisGet(ast.Identifier node, _) { 753 ir.Primitive visitThisGet(ast.Identifier node, _) {
746 return irBuilder.buildThis(); 754 return irBuilder.buildThis();
747 } 755 }
748 756
749 ir.Primitive translateTypeVariableTypeLiteral(TypeVariableElement element) { 757 ir.Primitive translateTypeVariableTypeLiteral(TypeVariableElement element) {
750 return buildReifyTypeVariable(irBuilder.buildThis(), element.type); 758 return buildReifyTypeVariable(irBuilder.buildThis(), element.type);
751 } 759 }
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
842 arguments = normalizeDynamicArguments(selector, arguments); 850 arguments = normalizeDynamicArguments(selector, arguments);
843 return irBuilder.buildDynamicInvocation(target, selector, arguments); 851 return irBuilder.buildDynamicInvocation(target, selector, arguments);
844 } 852 }
845 853
846 ir.Primitive translateSuperBinary(FunctionElement function, 854 ir.Primitive translateSuperBinary(FunctionElement function,
847 op.BinaryOperator operator, 855 op.BinaryOperator operator,
848 ast.Node argument) { 856 ast.Node argument) {
849 Selector selector = new Selector.binaryOperator(operator.selectorName); 857 Selector selector = new Selector.binaryOperator(operator.selectorName);
850 List<ir.Primitive> arguments = <ir.Primitive>[visit(argument)]; 858 List<ir.Primitive> arguments = <ir.Primitive>[visit(argument)];
851 arguments = normalizeDynamicArguments(selector, arguments); 859 arguments = normalizeDynamicArguments(selector, arguments);
852 return irBuilder.buildSuperInvocation(function, selector, arguments); 860 return irBuilder.buildSuperMethodInvocation(function, selector, arguments);
853 } 861 }
854 862
855 @override 863 @override
856 ir.Primitive visitSuperBinary( 864 ir.Primitive visitSuperBinary(
857 ast.Send node, 865 ast.Send node,
858 FunctionElement function, 866 FunctionElement function,
859 op.BinaryOperator operator, 867 op.BinaryOperator operator,
860 ast.Node argument, 868 ast.Node argument,
861 _) { 869 _) {
862 return translateSuperBinary(function, operator, argument); 870 return translateSuperBinary(function, operator, argument);
863 } 871 }
864 872
865 @override 873 @override
866 ir.Primitive visitSuperIndex( 874 ir.Primitive visitSuperIndex(
867 ast.Send node, 875 ast.Send node,
868 FunctionElement function, 876 FunctionElement function,
869 ast.Node index, 877 ast.Node index,
870 _) { 878 _) {
871 Selector selector = new Selector.index(); 879 Selector selector = new Selector.index();
872 List<ir.Primitive> arguments = <ir.Primitive>[visit(index)]; 880 List<ir.Primitive> arguments = <ir.Primitive>[visit(index)];
873 arguments = normalizeDynamicArguments(selector, arguments); 881 arguments = normalizeDynamicArguments(selector, arguments);
874 return irBuilder.buildSuperInvocation(function, selector, arguments); 882 return irBuilder.buildSuperMethodInvocation(function, selector, arguments);
875 } 883 }
876 884
877 @override 885 @override
878 ir.Primitive visitEquals( 886 ir.Primitive visitEquals(
879 ast.Send node, 887 ast.Send node,
880 ast.Node left, 888 ast.Node left,
881 ast.Node right, 889 ast.Node right,
882 _) { 890 _) {
883 return translateBinary(left, op.BinaryOperator.EQ, right); 891 return translateBinary(left, op.BinaryOperator.EQ, right);
884 } 892 }
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
936 ir.Primitive visitSuperUnary( 944 ir.Primitive visitSuperUnary(
937 ast.Send node, 945 ast.Send node,
938 op.UnaryOperator operator, 946 op.UnaryOperator operator,
939 FunctionElement function, 947 FunctionElement function,
940 _) { 948 _) {
941 // TODO(johnniwinther): Clean up the creation of selectors. 949 // TODO(johnniwinther): Clean up the creation of selectors.
942 Selector selector = new Selector( 950 Selector selector = new Selector(
943 SelectorKind.OPERATOR, 951 SelectorKind.OPERATOR,
944 new PublicName(operator.selectorName), 952 new PublicName(operator.selectorName),
945 CallStructure.NO_ARGS); 953 CallStructure.NO_ARGS);
946 return irBuilder.buildSuperInvocation(function, selector, const []); 954 return irBuilder.buildSuperMethodInvocation(function, selector, const []);
947 } 955 }
948 956
949 // TODO(johnniwinther): Handle this in the [IrBuilder] to ensure the correct 957 // TODO(johnniwinther): Handle this in the [IrBuilder] to ensure the correct
950 // semantic correlation between arguments and invocation. 958 // semantic correlation between arguments and invocation.
951 List<ir.Primitive> translateDynamicArguments(ast.NodeList nodeList, 959 List<ir.Primitive> translateDynamicArguments(ast.NodeList nodeList,
952 Selector selector) { 960 Selector selector) {
953 List<ir.Primitive> arguments = nodeList.nodes.mapToList(visit); 961 List<ir.Primitive> arguments = nodeList.nodes.mapToList(visit);
954 return normalizeDynamicArguments(selector, arguments); 962 return normalizeDynamicArguments(selector, arguments);
955 } 963 }
956 964
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 translateReceiver(receiver), selector, 1009 translateReceiver(receiver), selector,
1002 translateDynamicArguments(arguments, selector)); 1010 translateDynamicArguments(arguments, selector));
1003 } 1011 }
1004 1012
1005 ir.Primitive handleLocalInvoke( 1013 ir.Primitive handleLocalInvoke(
1006 ast.Send node, 1014 ast.Send node,
1007 LocalElement element, 1015 LocalElement element,
1008 ast.NodeList arguments, 1016 ast.NodeList arguments,
1009 Selector selector, 1017 Selector selector,
1010 _) { 1018 _) {
1011 return irBuilder.buildLocalInvocation(element, selector, 1019 return irBuilder.buildLocalVariableInvocation(element, selector,
1012 translateDynamicArguments(arguments, selector)); 1020 translateDynamicArguments(arguments, selector));
1013 } 1021 }
1014 1022
1023 @override
1024 ir.Primitive visitLocalFunctionInvoke(
1025 ast.Send node,
1026 LocalFunctionElement function,
1027 ast.NodeList arguments,
1028 Selector selector,
1029 _) {
1030 return irBuilder.buildLocalFunctionInvocation(function, selector,
1031 translateDynamicArguments(arguments, selector));
1032 }
1033
1015 @override 1034 @override
1016 ir.Primitive handleStaticFieldInvoke( 1035 ir.Primitive handleStaticFieldInvoke(
1017 ast.Send node, 1036 ast.Send node,
1018 FieldElement field, 1037 FieldElement field,
1019 ast.NodeList arguments, 1038 ast.NodeList arguments,
1020 Selector selector, 1039 Selector selector,
1021 _) { 1040 _) {
1022 return translateCallInvoke( 1041 return irBuilder.buildStaticFieldInvocation(field, selector,
1023 irBuilder.buildStaticGet(field), 1042 translateDynamicArguments(arguments, selector));
1024 arguments, selector);
1025 } 1043 }
1026 1044
1027 @override 1045 @override
1028 ir.Primitive handleStaticFunctionInvoke( 1046 ir.Primitive handleStaticFunctionInvoke(
1029 ast.Send node, 1047 ast.Send node,
1030 MethodElement function, 1048 MethodElement function,
1031 ast.NodeList arguments, 1049 ast.NodeList arguments,
1032 Selector selector, 1050 Selector selector,
1033 _) { 1051 _) {
1034 // TODO(karlklose): support foreign functions. 1052 // TODO(karlklose): support foreign functions.
1035 if (function.isForeign(compiler.backend)) { 1053 if (function.isForeign(compiler.backend)) {
1036 return giveup(node, 'handleStaticFunctionInvoke: foreign: $function'); 1054 return giveup(node, 'handleStaticFunctionInvoke: foreign: $function');
1037 } 1055 }
1038 return irBuilder.buildStaticInvocation(function, selector, 1056 return irBuilder.buildStaticFunctionInvocation(function, selector,
1039 translateStaticArguments(arguments, function, selector.callStructure), 1057 translateStaticArguments(arguments, function, selector.callStructure),
1040 sourceInformation: sourceInformationBuilder.buildCall(node)); 1058 sourceInformation: sourceInformationBuilder.buildCall(node));
1041 } 1059 }
1042 1060
1043 @override 1061 @override
1044 ir.Primitive handleStaticGetterInvoke( 1062 ir.Primitive handleStaticGetterInvoke(
1045 ast.Send node, 1063 ast.Send node,
1046 FunctionElement getter, 1064 FunctionElement getter,
1047 ast.NodeList arguments, 1065 ast.NodeList arguments,
1048 Selector selector, 1066 Selector selector,
1049 _) { 1067 _) {
1050 return translateCallInvoke( 1068 return irBuilder.buildStaticGetterInvocation(getter, selector,
1051 irBuilder.buildStaticGet(getter), 1069 translateDynamicArguments(arguments, selector));
1052 arguments, selector);
1053 } 1070 }
1054 1071
1055 @override 1072 @override
1056 ir.Primitive visitSuperFieldInvoke( 1073 ir.Primitive visitSuperFieldInvoke(
1057 ast.Send node, 1074 ast.Send node,
1058 FieldElement field, 1075 FieldElement field,
1059 ast.NodeList arguments, 1076 ast.NodeList arguments,
1060 Selector selector, 1077 Selector selector,
1061 _) { 1078 _) {
1062 return translateCallInvoke( 1079 return irBuilder.buildSuperFieldInvocation(field, selector,
1063 irBuilder.buildSuperGet(field), 1080 translateDynamicArguments(arguments, selector));
1064 arguments, selector);
1065 } 1081 }
1066 1082
1067 @override 1083 @override
1068 ir.Primitive visitSuperGetterInvoke( 1084 ir.Primitive visitSuperGetterInvoke(
1069 ast.Send node, 1085 ast.Send node,
1070 FunctionElement getter, 1086 FunctionElement getter,
1071 ast.NodeList arguments, 1087 ast.NodeList arguments,
1072 Selector selector, 1088 Selector selector,
1073 _) { 1089 _) {
1074 return translateCallInvoke( 1090 return irBuilder.buildSuperGetterInvocation(getter, selector,
1075 irBuilder.buildSuperGet(getter), 1091 translateDynamicArguments(arguments, selector));
1076 arguments, selector);
1077 } 1092 }
1078 1093
1079 @override 1094 @override
1080 ir.Primitive visitSuperMethodInvoke( 1095 ir.Primitive visitSuperMethodInvoke(
1081 ast.Send node, 1096 ast.Send node,
1082 MethodElement method, 1097 MethodElement method,
1083 ast.NodeList arguments, 1098 ast.NodeList arguments,
1084 Selector selector, 1099 Selector selector,
1085 _) { 1100 _) {
1086 return irBuilder.buildSuperInvocation(method, selector, 1101 return irBuilder.buildSuperMethodInvocation(method, selector,
1087 translateDynamicArguments(arguments, selector)); 1102 translateDynamicArguments(arguments, selector));
1088 } 1103 }
1089 1104
1090 @override 1105 @override
1091 ir.Primitive visitThisInvoke( 1106 ir.Primitive visitThisInvoke(
1092 ast.Send node, 1107 ast.Send node,
1093 ast.NodeList arguments, 1108 ast.NodeList arguments,
1094 Selector selector, 1109 Selector selector,
1095 _) { 1110 _) {
1096 return translateCallInvoke(irBuilder.buildThis(), arguments, selector); 1111 return translateCallInvoke(irBuilder.buildThis(), arguments, selector);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1175 ast.Node index, 1190 ast.Node index,
1176 op.AssignmentOperator operator, 1191 op.AssignmentOperator operator,
1177 ast.Node rhs, 1192 ast.Node rhs,
1178 _) { 1193 _) {
1179 ir.Primitive indexValue = visit(index); 1194 ir.Primitive indexValue = visit(index);
1180 return translateCompound( 1195 return translateCompound(
1181 getValue: () { 1196 getValue: () {
1182 Selector selector = new Selector.index(); 1197 Selector selector = new Selector.index();
1183 List<ir.Primitive> arguments = <ir.Primitive>[indexValue]; 1198 List<ir.Primitive> arguments = <ir.Primitive>[indexValue];
1184 arguments = normalizeDynamicArguments(selector, arguments); 1199 arguments = normalizeDynamicArguments(selector, arguments);
1185 return irBuilder.buildSuperInvocation(getter, selector, arguments); 1200 return irBuilder.buildSuperMethodInvocation(
1201 getter, selector, arguments);
1186 }, 1202 },
1187 operator: operator, 1203 operator: operator,
1188 rhs: rhs, 1204 rhs: rhs,
1189 setValue: (ir.Primitive result) { 1205 setValue: (ir.Primitive result) {
1190 irBuilder.buildSuperIndexSet(setter, indexValue, result); 1206 irBuilder.buildSuperIndexSet(setter, indexValue, result);
1191 }); 1207 });
1192 } 1208 }
1193 1209
1194 ir.Primitive translatePrefixPostfix( 1210 ir.Primitive translatePrefixPostfix(
1195 {ir.Primitive getValue(), 1211 {ir.Primitive getValue(),
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1276 } 1292 }
1277 1293
1278 @override 1294 @override
1279 ir.Primitive handleLocalCompound( 1295 ir.Primitive handleLocalCompound(
1280 ast.Send node, 1296 ast.Send node,
1281 LocalElement element, 1297 LocalElement element,
1282 op.AssignmentOperator operator, 1298 op.AssignmentOperator operator,
1283 ast.Node rhs, 1299 ast.Node rhs,
1284 _) { 1300 _) {
1285 return translateCompound( 1301 return translateCompound(
1286 getValue: () => irBuilder.buildLocalGet(element), 1302 getValue: () => irBuilder.buildLocalVariableGet(element),
1287 operator: operator, 1303 operator: operator,
1288 rhs: rhs, 1304 rhs: rhs,
1289 setValue: (ir.Primitive result) { 1305 setValue: (ir.Primitive result) {
1290 irBuilder.buildLocalSet(element, result); 1306 irBuilder.buildLocalVariableSet(element, result);
1291 }); 1307 });
1292 } 1308 }
1293 1309
1294 @override 1310 @override
1295 ir.Primitive handleLocalPostfixPrefix( 1311 ir.Primitive handleLocalPostfixPrefix(
1296 ast.Send node, 1312 ast.Send node,
1297 LocalElement element, 1313 LocalElement element,
1298 op.IncDecOperator operator, 1314 op.IncDecOperator operator,
1299 arg, 1315 arg,
1300 {bool isPrefix}) { 1316 {bool isPrefix}) {
1301 return translatePrefixPostfix( 1317 return translatePrefixPostfix(
1302 getValue: () => irBuilder.buildLocalGet(element), 1318 getValue: () => irBuilder.buildLocalVariableGet(element),
1303 operator: operator, 1319 operator: operator,
1304 setValue: (ir.Primitive result) { 1320 setValue: (ir.Primitive result) {
1305 irBuilder.buildLocalSet(element, result); 1321 irBuilder.buildLocalVariableSet(element, result);
1306 }, 1322 },
1307 isPrefix: isPrefix); 1323 isPrefix: isPrefix);
1308 } 1324 }
1309 1325
1310 @override 1326 @override
1311 ir.Primitive handleLocalSet( 1327 ir.Primitive handleLocalSet(
1312 ast.SendSet node, 1328 ast.SendSet node,
1313 LocalElement element, 1329 LocalElement element,
1314 ast.Node rhs, 1330 ast.Node rhs,
1315 _) { 1331 _) {
1316 return irBuilder.buildLocalSet(element, visit(rhs)); 1332 return irBuilder.buildLocalVariableSet(element, visit(rhs));
1317 } 1333 }
1318 1334
1319 @override 1335 @override
1320 ir.Primitive handleStaticFieldCompound( 1336 ir.Primitive handleStaticFieldCompound(
1321 ast.Send node, 1337 ast.Send node,
1322 FieldElement field, 1338 FieldElement field,
1323 op.AssignmentOperator operator, 1339 op.AssignmentOperator operator,
1324 ast.Node rhs, 1340 ast.Node rhs,
1325 _) { 1341 _) {
1326 return translateCompound( 1342 return translateCompound(
1327 getValue: () => irBuilder.buildStaticGet(field), 1343 getValue: () => irBuilder.buildStaticFieldGet(field),
1328 operator: operator, 1344 operator: operator,
1329 rhs: rhs, 1345 rhs: rhs,
1330 setValue: (ir.Primitive result) { 1346 setValue: (ir.Primitive result) {
1331 irBuilder.buildStaticSet(field, result); 1347 irBuilder.buildStaticFieldSet(field, result);
1332 }); 1348 });
1333 } 1349 }
1334 1350
1335 @override 1351 @override
1336 ir.Primitive handleStaticFieldPostfixPrefix( 1352 ir.Primitive handleStaticFieldPostfixPrefix(
1337 ast.Send node, 1353 ast.Send node,
1338 FieldElement field, 1354 FieldElement field,
1339 op.IncDecOperator operator, 1355 op.IncDecOperator operator,
1340 arg, 1356 arg,
1341 {bool isPrefix}) { 1357 {bool isPrefix}) {
1342 return translatePrefixPostfix( 1358 return translatePrefixPostfix(
1343 getValue: () => irBuilder.buildStaticGet(field), 1359 getValue: () => irBuilder.buildStaticFieldGet(field),
1344 operator: operator, 1360 operator: operator,
1345 setValue: (ir.Primitive result) { 1361 setValue: (ir.Primitive result) {
1346 irBuilder.buildStaticSet(field, result); 1362 irBuilder.buildStaticFieldSet(field, result);
1347 }, 1363 },
1348 isPrefix: isPrefix); 1364 isPrefix: isPrefix);
1349 } 1365 }
1350 1366
1351 @override 1367 @override
1352 ir.Primitive handleStaticFieldSet( 1368 ir.Primitive handleStaticFieldSet(
1353 ast.SendSet node, 1369 ast.SendSet node,
1354 FieldElement field, 1370 FieldElement field,
1355 ast.Node rhs, 1371 ast.Node rhs,
1356 _) { 1372 _) {
1357 return irBuilder.buildStaticSet(field, visit(rhs)); 1373 return irBuilder.buildStaticFieldSet(field, visit(rhs));
1358 } 1374 }
1359 1375
1360 @override 1376 @override
1361 ir.Primitive visitSuperFieldSet( 1377 ir.Primitive visitSuperFieldSet(
1362 ast.SendSet node, 1378 ast.SendSet node,
1363 FieldElement field, 1379 FieldElement field,
1364 ast.Node rhs, 1380 ast.Node rhs,
1365 _) { 1381 _) {
1366 return irBuilder.buildSuperSet(field, visit(rhs)); 1382 return irBuilder.buildSuperFieldSet(field, visit(rhs));
1367 } 1383 }
1368 1384
1369 @override 1385 @override
1370 ir.Primitive visitSuperSetterSet( 1386 ir.Primitive visitSuperSetterSet(
1371 ast.SendSet node, 1387 ast.SendSet node,
1372 FunctionElement setter, 1388 FunctionElement setter,
1373 ast.Node rhs, 1389 ast.Node rhs,
1374 _) { 1390 _) {
1375 return irBuilder.buildSuperSet(setter, visit(rhs)); 1391 return irBuilder.buildSuperSetterSet(setter, visit(rhs));
1376 } 1392 }
1377 1393
1378 @override 1394 @override
1379 ir.Primitive handleStaticGetterSetterCompound( 1395 ir.Primitive handleStaticGetterSetterCompound(
1380 ast.Send node, 1396 ast.Send node,
1381 FunctionElement getter, 1397 FunctionElement getter,
1382 FunctionElement setter, 1398 FunctionElement setter,
1383 op.AssignmentOperator operator, 1399 op.AssignmentOperator operator,
1384 ast.Node rhs, 1400 ast.Node rhs,
1385 _) { 1401 _) {
1386 return translateCompound( 1402 return translateCompound(
1387 getValue: () => irBuilder.buildStaticGet(getter), 1403 getValue: () => irBuilder.buildStaticGetterGet(getter),
1388 operator: operator, 1404 operator: operator,
1389 rhs: rhs, 1405 rhs: rhs,
1390 setValue: (ir.Primitive result) { 1406 setValue: (ir.Primitive result) {
1391 irBuilder.buildStaticSet(setter, result); 1407 irBuilder.buildStaticSetterSet(setter, result);
1392 }); 1408 });
1393 } 1409 }
1394 1410
1395 @override 1411 @override
1396 ir.Primitive handleSuperFieldFieldPostfixPrefix( 1412 ir.Primitive handleSuperFieldFieldPostfixPrefix(
1397 ast.Send node, 1413 ast.Send node,
1398 FieldElement readField, 1414 FieldElement readField,
1399 FieldElement writtenField, 1415 FieldElement writtenField,
1400 op.IncDecOperator operator, 1416 op.IncDecOperator operator,
1401 arg, 1417 arg,
1402 {bool isPrefix}) { 1418 {bool isPrefix}) {
1403 return translatePrefixPostfix( 1419 return translatePrefixPostfix(
1404 getValue: () => irBuilder.buildSuperGet(readField), 1420 getValue: () => irBuilder.buildSuperFieldGet(readField),
1405 operator: operator, 1421 operator: operator,
1406 setValue: (ir.Primitive result) { 1422 setValue: (ir.Primitive result) {
1407 irBuilder.buildSuperSet(writtenField, result); 1423 irBuilder.buildSuperFieldSet(writtenField, result);
1408 }, 1424 },
1409 isPrefix: isPrefix); 1425 isPrefix: isPrefix);
1410 } 1426 }
1411 1427
1412 @override 1428 @override
1413 ir.Primitive handleSuperFieldSetterPostfixPrefix( 1429 ir.Primitive handleSuperFieldSetterPostfixPrefix(
1414 ast.Send node, 1430 ast.Send node,
1415 FieldElement field, 1431 FieldElement field,
1416 FunctionElement setter, 1432 FunctionElement setter,
1417 op.IncDecOperator operator, 1433 op.IncDecOperator operator,
1418 arg, 1434 arg,
1419 {bool isPrefix}) { 1435 {bool isPrefix}) {
1420 return translatePrefixPostfix( 1436 return translatePrefixPostfix(
1421 getValue: () => irBuilder.buildSuperGet(field), 1437 getValue: () => irBuilder.buildSuperFieldGet(field),
1422 operator: operator, 1438 operator: operator,
1423 setValue: (ir.Primitive result) { 1439 setValue: (ir.Primitive result) {
1424 irBuilder.buildSuperSet(setter, result); 1440 irBuilder.buildSuperSetterSet(setter, result);
1425 }, 1441 },
1426 isPrefix: isPrefix); 1442 isPrefix: isPrefix);
1427 } 1443 }
1428 1444
1429 @override 1445 @override
1430 ir.Primitive handleSuperGetterFieldPostfixPrefix( 1446 ir.Primitive handleSuperGetterFieldPostfixPrefix(
1431 ast.Send node, 1447 ast.Send node,
1432 FunctionElement getter, 1448 FunctionElement getter,
1433 FieldElement field, 1449 FieldElement field,
1434 op.IncDecOperator operator, 1450 op.IncDecOperator operator,
1435 arg, 1451 arg,
1436 {bool isPrefix}) { 1452 {bool isPrefix}) {
1437 return translatePrefixPostfix( 1453 return translatePrefixPostfix(
1438 getValue: () => irBuilder.buildSuperGet(getter), 1454 getValue: () => irBuilder.buildSuperGetterGet(getter),
1439 operator: operator, 1455 operator: operator,
1440 setValue: (ir.Primitive result) { 1456 setValue: (ir.Primitive result) {
1441 irBuilder.buildSuperSet(field, result); 1457 irBuilder.buildSuperFieldSet(field, result);
1442 }, 1458 },
1443 isPrefix: isPrefix); 1459 isPrefix: isPrefix);
1444 } 1460 }
1445 1461
1446 @override 1462 @override
1447 ir.Primitive handleSuperGetterSetterPostfixPrefix( 1463 ir.Primitive handleSuperGetterSetterPostfixPrefix(
1448 ast.Send node, 1464 ast.Send node,
1449 FunctionElement getter, 1465 FunctionElement getter,
1450 FunctionElement setter, 1466 FunctionElement setter,
1451 op.IncDecOperator operator, 1467 op.IncDecOperator operator,
1452 arg, 1468 arg,
1453 {bool isPrefix}) { 1469 {bool isPrefix}) {
1454 return translatePrefixPostfix( 1470 return translatePrefixPostfix(
1455 getValue: () => irBuilder.buildSuperGet(getter), 1471 getValue: () => irBuilder.buildSuperGetterGet(getter),
1456 operator: operator, 1472 operator: operator,
1457 setValue: (ir.Primitive result) { 1473 setValue: (ir.Primitive result) {
1458 irBuilder.buildSuperSet(setter, result); 1474 irBuilder.buildSuperSetterSet(setter, result);
1459 }, 1475 },
1460 isPrefix: isPrefix); 1476 isPrefix: isPrefix);
1461 } 1477 }
1462 1478
1463 @override 1479 @override
1464 ir.Primitive handleSuperMethodSetterPostfixPrefix( 1480 ir.Primitive handleSuperMethodSetterPostfixPrefix(
1465 ast.Send node, 1481 ast.Send node,
1466 FunctionElement method, 1482 FunctionElement method,
1467 FunctionElement setter, 1483 FunctionElement setter,
1468 op.IncDecOperator operator, 1484 op.IncDecOperator operator,
1469 arg, 1485 arg,
1470 {bool isPrefix}) { 1486 {bool isPrefix}) {
1471 return translatePrefixPostfix( 1487 return translatePrefixPostfix(
1472 getValue: () => irBuilder.buildSuperGet(method), 1488 getValue: () => irBuilder.buildSuperMethodGet(method),
1473 operator: operator, 1489 operator: operator,
1474 setValue: (ir.Primitive result) { 1490 setValue: (ir.Primitive result) {
1475 irBuilder.buildSuperSet(setter, result); 1491 irBuilder.buildSuperSetterSet(setter, result);
1476 }, 1492 },
1477 isPrefix: isPrefix); 1493 isPrefix: isPrefix);
1478 } 1494 }
1479 1495
1480 @override 1496 @override
1481 ir.Primitive handleStaticGetterSetterPostfixPrefix( 1497 ir.Primitive handleStaticGetterSetterPostfixPrefix(
1482 ast.Send node, 1498 ast.Send node,
1483 FunctionElement getter, 1499 FunctionElement getter,
1484 FunctionElement setter, 1500 FunctionElement setter,
1485 op.IncDecOperator operator, 1501 op.IncDecOperator operator,
1486 arg, 1502 arg,
1487 {bool isPrefix}) { 1503 {bool isPrefix}) {
1488 return translatePrefixPostfix( 1504 return translatePrefixPostfix(
1489 getValue: () => irBuilder.buildStaticGet(getter), 1505 getValue: () => irBuilder.buildStaticGetterGet(getter),
1490 operator: operator, 1506 operator: operator,
1491 setValue: (ir.Primitive result) { 1507 setValue: (ir.Primitive result) {
1492 irBuilder.buildStaticSet(setter, result); 1508 irBuilder.buildStaticSetterSet(setter, result);
1493 }, 1509 },
1494 isPrefix: isPrefix); 1510 isPrefix: isPrefix);
1495 } 1511 }
1496 1512
1497 @override 1513 @override
1498 ir.Primitive handleStaticMethodSetterCompound( 1514 ir.Primitive handleStaticMethodSetterCompound(
1499 ast.Send node, 1515 ast.Send node,
1500 FunctionElement method, 1516 FunctionElement method,
1501 FunctionElement setter, 1517 FunctionElement setter,
1502 op.AssignmentOperator operator, 1518 op.AssignmentOperator operator,
1503 ast.Node rhs, 1519 ast.Node rhs,
1504 _) { 1520 _) {
1505 return translateCompound( 1521 return translateCompound(
1506 getValue: () => irBuilder.buildStaticGet(method), 1522 getValue: () => irBuilder.buildStaticFunctionGet(method),
1507 operator: operator, 1523 operator: operator,
1508 rhs: rhs, 1524 rhs: rhs,
1509 setValue: (ir.Primitive result) { 1525 setValue: (ir.Primitive result) {
1510 irBuilder.buildStaticSet(setter, result); 1526 irBuilder.buildStaticSetterSet(setter, result);
1511 }); 1527 });
1512 } 1528 }
1513 1529
1514 @override 1530 @override
1515 ir.Primitive handleStaticMethodSetterPostfixPrefix( 1531 ir.Primitive handleStaticMethodSetterPostfixPrefix(
1516 ast.Send node, 1532 ast.Send node,
1517 FunctionElement getter, 1533 FunctionElement getter,
1518 FunctionElement setter, 1534 FunctionElement setter,
1519 op.IncDecOperator operator, 1535 op.IncDecOperator operator,
1520 arg, 1536 arg,
1521 {bool isPrefix}) { 1537 {bool isPrefix}) {
1522 return translatePrefixPostfix( 1538 return translatePrefixPostfix(
1523 getValue: () => irBuilder.buildStaticGet(getter), 1539 getValue: () => irBuilder.buildStaticFunctionGet(getter),
1524 operator: operator, 1540 operator: operator,
1525 setValue: (ir.Primitive result) { 1541 setValue: (ir.Primitive result) {
1526 irBuilder.buildStaticSet(setter, result); 1542 irBuilder.buildStaticSetterSet(setter, result);
1527 }, 1543 },
1528 isPrefix: isPrefix); 1544 isPrefix: isPrefix);
1529 } 1545 }
1530 1546
1531 @override 1547 @override
1532 ir.Primitive handleDynamicIndexPostfixPrefix( 1548 ir.Primitive handleDynamicIndexPostfixPrefix(
1533 ast.Send node, 1549 ast.Send node,
1534 ast.Node receiver, 1550 ast.Node receiver,
1535 ast.Node index, 1551 ast.Node index,
1536 op.IncDecOperator operator, 1552 op.IncDecOperator operator,
(...skipping 26 matching lines...) Expand all
1563 ast.Node index, 1579 ast.Node index,
1564 op.IncDecOperator operator, 1580 op.IncDecOperator operator,
1565 arg, 1581 arg,
1566 {bool isPrefix}) { 1582 {bool isPrefix}) {
1567 ir.Primitive indexValue = visit(index); 1583 ir.Primitive indexValue = visit(index);
1568 return translatePrefixPostfix( 1584 return translatePrefixPostfix(
1569 getValue: () { 1585 getValue: () {
1570 Selector selector = new Selector.index(); 1586 Selector selector = new Selector.index();
1571 List<ir.Primitive> arguments = <ir.Primitive>[indexValue]; 1587 List<ir.Primitive> arguments = <ir.Primitive>[indexValue];
1572 arguments = normalizeDynamicArguments(selector, arguments); 1588 arguments = normalizeDynamicArguments(selector, arguments);
1573 return irBuilder.buildSuperInvocation( 1589 return irBuilder.buildSuperMethodInvocation(
1574 indexFunction, selector, arguments); 1590 indexFunction, selector, arguments);
1575 }, 1591 },
1576 operator: operator, 1592 operator: operator,
1577 setValue: (ir.Primitive result) { 1593 setValue: (ir.Primitive result) {
1578 Selector selector = new Selector.indexSet(); 1594 Selector selector = new Selector.indexSet();
1579 List<ir.Primitive> arguments = <ir.Primitive>[indexValue, result]; 1595 List<ir.Primitive> arguments = <ir.Primitive>[indexValue, result];
1580 arguments = normalizeDynamicArguments(selector, arguments); 1596 arguments = normalizeDynamicArguments(selector, arguments);
1581 irBuilder.buildSuperInvocation( 1597 irBuilder.buildSuperMethodInvocation(
1582 indexSetFunction, selector, arguments); 1598 indexSetFunction, selector, arguments);
1583 }, 1599 },
1584 isPrefix: isPrefix); 1600 isPrefix: isPrefix);
1585 } 1601 }
1586 1602
1587 @override 1603 @override
1588 ir.Primitive handleStaticSetterSet( 1604 ir.Primitive handleStaticSetterSet(
1589 ast.SendSet node, 1605 ast.SendSet node,
1590 FunctionElement setter, 1606 FunctionElement setter,
1591 ast.Node rhs, 1607 ast.Node rhs,
1592 _) { 1608 _) {
1593 return irBuilder.buildStaticSet(setter, visit(rhs)); 1609 return irBuilder.buildStaticSetterSet(setter, visit(rhs));
1594 } 1610 }
1595 1611
1596 @override 1612 @override
1597 ir.Primitive visitSuperFieldCompound( 1613 ir.Primitive visitSuperFieldCompound(
1598 ast.Send node, 1614 ast.Send node,
1599 FieldElement field, 1615 FieldElement field,
1600 op.AssignmentOperator operator, 1616 op.AssignmentOperator operator,
1601 ast.Node rhs, 1617 ast.Node rhs,
1602 _) { 1618 _) {
1603 return translateCompound( 1619 return translateCompound(
1604 getValue: () => irBuilder.buildSuperGet(field), 1620 getValue: () => irBuilder.buildSuperFieldGet(field),
1605 operator: operator, 1621 operator: operator,
1606 rhs: rhs, 1622 rhs: rhs,
1607 setValue: (ir.Primitive result) { 1623 setValue: (ir.Primitive result) {
1608 irBuilder.buildSuperSet(field, result); 1624 irBuilder.buildSuperFieldSet(field, result);
1609 }); 1625 });
1610 } 1626 }
1611 1627
1612 @override 1628 @override
1613 ir.Primitive visitSuperFieldFieldPostfix( 1629 ir.Primitive visitSuperFieldFieldPostfix(
1614 ast.Send node, 1630 ast.Send node,
1615 FieldElement readField, 1631 FieldElement readField,
1616 FieldElement writtenField, 1632 FieldElement writtenField,
1617 op.IncDecOperator operator, 1633 op.IncDecOperator operator,
1618 _) { 1634 _) {
1619 return translatePrefixPostfix( 1635 return translatePrefixPostfix(
1620 getValue: () => irBuilder.buildSuperGet(readField), 1636 getValue: () => irBuilder.buildSuperFieldGet(readField),
1621 operator: operator, 1637 operator: operator,
1622 setValue: (ir.Primitive result) { 1638 setValue: (ir.Primitive result) {
1623 irBuilder.buildSuperSet(writtenField, result); 1639 irBuilder.buildSuperFieldSet(writtenField, result);
1624 }, 1640 },
1625 isPrefix: false); 1641 isPrefix: false);
1626 } 1642 }
1627 1643
1628 @override 1644 @override
1629 ir.Primitive visitSuperFieldFieldPrefix( 1645 ir.Primitive visitSuperFieldFieldPrefix(
1630 ast.Send node, 1646 ast.Send node,
1631 FieldElement readField, 1647 FieldElement readField,
1632 FieldElement writtenField, 1648 FieldElement writtenField,
1633 op.IncDecOperator operator, 1649 op.IncDecOperator operator,
1634 _) { 1650 _) {
1635 return translatePrefixPostfix( 1651 return translatePrefixPostfix(
1636 getValue: () => irBuilder.buildSuperGet(readField), 1652 getValue: () => irBuilder.buildSuperFieldGet(readField),
1637 operator: operator, 1653 operator: operator,
1638 setValue: (ir.Primitive result) { 1654 setValue: (ir.Primitive result) {
1639 irBuilder.buildSuperSet(writtenField, result); 1655 irBuilder.buildSuperFieldSet(writtenField, result);
1640 }, 1656 },
1641 isPrefix: true); 1657 isPrefix: true);
1642 } 1658 }
1643 1659
1644 @override 1660 @override
1645 ir.Primitive visitSuperFieldSetterCompound( 1661 ir.Primitive visitSuperFieldSetterCompound(
1646 ast.Send node, 1662 ast.Send node,
1647 FieldElement field, 1663 FieldElement field,
1648 FunctionElement setter, 1664 FunctionElement setter,
1649 op.AssignmentOperator operator, 1665 op.AssignmentOperator operator,
1650 ast.Node rhs, 1666 ast.Node rhs,
1651 _) { 1667 _) {
1652 return translateCompound( 1668 return translateCompound(
1653 getValue: () => irBuilder.buildSuperGet(field), 1669 getValue: () => irBuilder.buildSuperFieldGet(field),
1654 operator: operator, 1670 operator: operator,
1655 rhs: rhs, 1671 rhs: rhs,
1656 setValue: (ir.Primitive result) { 1672 setValue: (ir.Primitive result) {
1657 irBuilder.buildSuperSet(setter, result); 1673 irBuilder.buildSuperSetterSet(setter, result);
1658 }); 1674 });
1659 } 1675 }
1660 1676
1661 @override 1677 @override
1662 ir.Primitive visitSuperGetterFieldCompound( 1678 ir.Primitive visitSuperGetterFieldCompound(
1663 ast.Send node, 1679 ast.Send node,
1664 FunctionElement getter, 1680 FunctionElement getter,
1665 FieldElement field, 1681 FieldElement field,
1666 op.AssignmentOperator operator, 1682 op.AssignmentOperator operator,
1667 ast.Node rhs, 1683 ast.Node rhs,
1668 _) { 1684 _) {
1669 return translateCompound( 1685 return translateCompound(
1670 getValue: () => irBuilder.buildSuperGet(getter), 1686 getValue: () => irBuilder.buildSuperGetterGet(getter),
1671 operator: operator, 1687 operator: operator,
1672 rhs: rhs, 1688 rhs: rhs,
1673 setValue: (ir.Primitive result) { 1689 setValue: (ir.Primitive result) {
1674 irBuilder.buildSuperSet(field, result); 1690 irBuilder.buildSuperFieldSet(field, result);
1675 }); 1691 });
1676 } 1692 }
1677 1693
1678 @override 1694 @override
1679 ir.Primitive visitSuperGetterSetterCompound( 1695 ir.Primitive visitSuperGetterSetterCompound(
1680 ast.Send node, 1696 ast.Send node,
1681 FunctionElement getter, 1697 FunctionElement getter,
1682 FunctionElement setter, 1698 FunctionElement setter,
1683 op.AssignmentOperator operator, 1699 op.AssignmentOperator operator,
1684 ast.Node rhs, 1700 ast.Node rhs,
1685 _) { 1701 _) {
1686 return translateCompound( 1702 return translateCompound(
1687 getValue: () => irBuilder.buildSuperGet(getter), 1703 getValue: () => irBuilder.buildSuperGetterGet(getter),
1688 operator: operator, 1704 operator: operator,
1689 rhs: rhs, 1705 rhs: rhs,
1690 setValue: (ir.Primitive result) { 1706 setValue: (ir.Primitive result) {
1691 irBuilder.buildSuperSet(setter, result); 1707 irBuilder.buildSuperSetterSet(setter, result);
1692 }); 1708 });
1693 } 1709 }
1694 1710
1695 @override 1711 @override
1696 ir.Primitive visitSuperMethodSetterCompound( 1712 ir.Primitive visitSuperMethodSetterCompound(
1697 ast.Send node, 1713 ast.Send node,
1698 FunctionElement method, 1714 FunctionElement method,
1699 FunctionElement setter, 1715 FunctionElement setter,
1700 op.AssignmentOperator operator, 1716 op.AssignmentOperator operator,
1701 ast.Node rhs, 1717 ast.Node rhs,
1702 _) { 1718 _) {
1703 return translateCompound( 1719 return translateCompound(
1704 getValue: () => irBuilder.buildSuperGet(method), 1720 getValue: () => irBuilder.buildSuperMethodGet(method),
1705 operator: operator, 1721 operator: operator,
1706 rhs: rhs, 1722 rhs: rhs,
1707 setValue: (ir.Primitive result) { 1723 setValue: (ir.Primitive result) {
1708 irBuilder.buildSuperSet(setter, result); 1724 irBuilder.buildSuperSetterSet(setter, result);
1709 }); 1725 });
1710 } 1726 }
1711 1727
1712 @override 1728 @override
1713 ir.Primitive handleConstructorInvoke( 1729 ir.Primitive handleConstructorInvoke(
1714 ast.NewExpression node, 1730 ast.NewExpression node,
1715 ConstructorElement constructor, 1731 ConstructorElement constructor,
1716 DartType type, 1732 DartType type,
1717 ast.NodeList arguments, 1733 ast.NodeList arguments,
1718 Selector selector, _) { 1734 Selector selector, _) {
(...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after
2329 fieldValues[field] = irBuilder.buildNullLiteral(); 2345 fieldValues[field] = irBuilder.buildNullLiteral();
2330 } 2346 }
2331 } 2347 }
2332 }); 2348 });
2333 // Evaluate initializing parameters, e.g. `Foo(this.x)`. 2349 // Evaluate initializing parameters, e.g. `Foo(this.x)`.
2334 constructor.functionSignature.orderedForEachParameter( 2350 constructor.functionSignature.orderedForEachParameter(
2335 (ParameterElement parameter) { 2351 (ParameterElement parameter) {
2336 if (parameter.isInitializingFormal) { 2352 if (parameter.isInitializingFormal) {
2337 InitializingFormalElement fieldParameter = parameter; 2353 InitializingFormalElement fieldParameter = parameter;
2338 fieldValues[fieldParameter.fieldElement] = 2354 fieldValues[fieldParameter.fieldElement] =
2339 irBuilder.buildLocalGet(parameter); 2355 irBuilder.buildLocalVariableGet(parameter);
2340 } 2356 }
2341 }); 2357 });
2342 // Evaluate constructor initializers, e.g. `Foo() : x = 50`. 2358 // Evaluate constructor initializers, e.g. `Foo() : x = 50`.
2343 ast.FunctionExpression node = constructor.node; 2359 ast.FunctionExpression node = constructor.node;
2344 bool hasConstructorCall = false; // Has this() or super() initializer? 2360 bool hasConstructorCall = false; // Has this() or super() initializer?
2345 if (node != null && node.initializers != null) { 2361 if (node != null && node.initializers != null) {
2346 for(ast.Node initializer in node.initializers) { 2362 for(ast.Node initializer in node.initializers) {
2347 if (initializer is ast.SendSet) { 2363 if (initializer is ast.SendSet) {
2348 // Field initializer. 2364 // Field initializer.
2349 FieldElement field = elements[initializer]; 2365 FieldElement field = elements[initializer];
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
2660 SourceInformation buildCall(ast.Node node) { 2676 SourceInformation buildCall(ast.Node node) {
2661 return new PositionSourceInformation( 2677 return new PositionSourceInformation(
2662 new TokenSourceLocation(sourceFile, node.getBeginToken(), name)); 2678 new TokenSourceLocation(sourceFile, node.getBeginToken(), name));
2663 } 2679 }
2664 2680
2665 @override 2681 @override
2666 SourceInformationBuilder forContext(AstElement element) { 2682 SourceInformationBuilder forContext(AstElement element) {
2667 return new PositionSourceInformationBuilder(element); 2683 return new PositionSourceInformationBuilder(element);
2668 } 2684 }
2669 } 2685 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart ('k') | pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698