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

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

Issue 1126173002: Refactor handling of compounds. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Refactor Created 5 years, 7 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 1899 matching lines...) Expand 10 before | Expand all | Expand 10 after
1910 ast.Send node, 1910 ast.Send node,
1911 ast.NodeList arguments, _) { 1911 ast.NodeList arguments, _) {
1912 if (compiler.enableUserAssertions) { 1912 if (compiler.enableUserAssertions) {
1913 return giveup(node, 'Assert'); 1913 return giveup(node, 'Assert');
1914 } else { 1914 } else {
1915 return irBuilder.buildNullConstant(); 1915 return irBuilder.buildNullConstant();
1916 } 1916 }
1917 } 1917 }
1918 1918
1919 @override 1919 @override
1920 ir.Primitive errorUnresolvedCompound( 1920 ir.Primitive visitUnresolvedCompound(
1921 ast.Send node, 1921 ast.Send node,
1922 Element element, 1922 Element element,
1923 op.AssignmentOperator operator, 1923 op.AssignmentOperator operator,
1924 ast.Node rhs, _) { 1924 ast.Node rhs, _) {
1925 // TODO(asgerf): What is unresolved? The getter and/or the setter? 1925 // TODO(asgerf): What is unresolved? The getter and/or the setter?
1926 // If it was the setter, we must evaluate the right-hand side. 1926 // If it was the setter, we must evaluate the right-hand side.
1927 return buildStaticNoSuchMethod(elements.getSelector(node), []); 1927 return buildStaticNoSuchMethod(elements.getSelector(node), []);
1928 } 1928 }
1929 1929
1930 @override 1930 @override
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1972 ir.Primitive visitUnresolvedInvoke( 1972 ir.Primitive visitUnresolvedInvoke(
1973 ast.Send node, 1973 ast.Send node,
1974 Element element, 1974 Element element,
1975 ast.NodeList arguments, 1975 ast.NodeList arguments,
1976 Selector selector, _) { 1976 Selector selector, _) {
1977 return buildStaticNoSuchMethod(elements.getSelector(node), 1977 return buildStaticNoSuchMethod(elements.getSelector(node),
1978 arguments.nodes.mapToList(visit)); 1978 arguments.nodes.mapToList(visit));
1979 } 1979 }
1980 1980
1981 @override 1981 @override
1982 ir.Primitive errorUnresolvedPostfix( 1982 ir.Primitive visitUnresolvedPostfix(
1983 ast.Send node, 1983 ast.Send node,
1984 Element element, 1984 Element element,
1985 op.IncDecOperator operator, _) { 1985 op.IncDecOperator operator, _) {
1986 // TODO(asgerf): Which ones are missing? The getter and/or the setter? 1986 // TODO(asgerf): Which ones are missing? The getter and/or the setter?
1987 return buildStaticNoSuchMethod(elements.getSelector(node), []); 1987 return buildStaticNoSuchMethod(elements.getSelector(node), []);
1988 } 1988 }
1989 1989
1990 @override 1990 @override
1991 ir.Primitive errorUnresolvedPrefix( 1991 ir.Primitive visitUnresolvedPrefix(
1992 ast.Send node, 1992 ast.Send node,
1993 Element element, 1993 Element element,
1994 op.IncDecOperator operator, _) { 1994 op.IncDecOperator operator, _) {
1995 // TODO(asgerf): Which ones are missing? The getter and/or the setter? 1995 // TODO(asgerf): Which ones are missing? The getter and/or the setter?
1996 return buildStaticNoSuchMethod(elements.getSelector(node), []); 1996 return buildStaticNoSuchMethod(elements.getSelector(node), []);
1997 } 1997 }
1998 1998
1999 @override 1999 @override
2000 ir.Primitive visitUnresolvedRedirectingFactoryConstructorInvoke( 2000 ir.Primitive visitUnresolvedRedirectingFactoryConstructorInvoke(
2001 ast.NewExpression node, 2001 ast.NewExpression node,
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
2194 ir.Primitive visitAbstractClassConstructorInvoke( 2194 ir.Primitive visitAbstractClassConstructorInvoke(
2195 ast.NewExpression node, 2195 ast.NewExpression node,
2196 ConstructorElement element, 2196 ConstructorElement element,
2197 InterfaceType type, 2197 InterfaceType type,
2198 ast.NodeList arguments, 2198 ast.NodeList arguments,
2199 CallStructure callStructure, _) { 2199 CallStructure callStructure, _) {
2200 return buildAbstractClassInstantiationError(element.enclosingClass); 2200 return buildAbstractClassInstantiationError(element.enclosingClass);
2201 } 2201 }
2202 2202
2203 @override 2203 @override
2204 ir.Primitive errorClassTypeLiteralCompound( 2204 ir.Primitive visitClassTypeLiteralCompound(
2205 ast.Send node, 2205 ast.Send node,
2206 ConstantExpression constant, 2206 ConstantExpression constant,
2207 op.AssignmentOperator operator, 2207 op.AssignmentOperator operator,
2208 ast.Node rhs, _) { 2208 ast.Node rhs, _) {
2209 return translateCompound( 2209 return translateCompound(
2210 getValue: () => irBuilder.buildConstant(constant), 2210 getValue: () => irBuilder.buildConstant(constant),
2211 operator: operator, 2211 operator: operator,
2212 rhs: rhs, 2212 rhs: rhs,
2213 setValue: (value) {}); // The binary operator will throw before this. 2213 setValue: (value) {}); // The binary operator will throw before this.
2214 } 2214 }
2215 2215
2216 @override 2216 @override
2217 ir.Primitive errorClassTypeLiteralPostfix( 2217 ir.Primitive visitClassTypeLiteralPostfix(
2218 ast.Send node, 2218 ast.Send node,
2219 ConstantExpression constant, 2219 ConstantExpression constant,
2220 op.IncDecOperator operator, _) { 2220 op.IncDecOperator operator, _) {
2221 return translatePrefixPostfix( 2221 return translatePrefixPostfix(
2222 getValue: () => irBuilder.buildConstant(constant), 2222 getValue: () => irBuilder.buildConstant(constant),
2223 operator: operator, 2223 operator: operator,
2224 setValue: (value) {}, // The binary operator will throw before this. 2224 setValue: (value) {}, // The binary operator will throw before this.
2225 isPrefix: false); 2225 isPrefix: false);
2226 } 2226 }
2227 2227
2228 @override 2228 @override
2229 ir.Primitive errorClassTypeLiteralPrefix( 2229 ir.Primitive visitClassTypeLiteralPrefix(
2230 ast.Send node, 2230 ast.Send node,
2231 ConstantExpression constant, 2231 ConstantExpression constant,
2232 op.IncDecOperator operator, _) { 2232 op.IncDecOperator operator, _) {
2233 return translatePrefixPostfix( 2233 return translatePrefixPostfix(
2234 getValue: () => irBuilder.buildConstant(constant), 2234 getValue: () => irBuilder.buildConstant(constant),
2235 operator: operator, 2235 operator: operator,
2236 setValue: (value) {}, // The binary operator will throw before this. 2236 setValue: (value) {}, // The binary operator will throw before this.
2237 isPrefix: true); 2237 isPrefix: true);
2238 } 2238 }
2239 2239
2240 @override 2240 @override
2241 ir.Primitive errorDynamicTypeLiteralCompound( 2241 ir.Primitive visitDynamicTypeLiteralCompound(
2242 ast.Send node, 2242 ast.Send node,
2243 ConstantExpression constant, 2243 ConstantExpression constant,
2244 op.AssignmentOperator operator, 2244 op.AssignmentOperator operator,
2245 ast.Node rhs, _) { 2245 ast.Node rhs, _) {
2246 return translateCompound( 2246 return translateCompound(
2247 getValue: () => irBuilder.buildConstant(constant), 2247 getValue: () => irBuilder.buildConstant(constant),
2248 operator: operator, 2248 operator: operator,
2249 rhs: rhs, 2249 rhs: rhs,
2250 setValue: (value) {}); // The binary operator will throw before this. 2250 setValue: (value) {}); // The binary operator will throw before this.
2251 } 2251 }
2252 2252
2253 @override 2253 @override
2254 ir.Primitive errorDynamicTypeLiteralPostfix( 2254 ir.Primitive visitDynamicTypeLiteralPostfix(
2255 ast.Send node, 2255 ast.Send node,
2256 ConstantExpression constant, 2256 ConstantExpression constant,
2257 op.IncDecOperator operator, _) { 2257 op.IncDecOperator operator, _) {
2258 return translatePrefixPostfix( 2258 return translatePrefixPostfix(
2259 getValue: () => irBuilder.buildConstant(constant), 2259 getValue: () => irBuilder.buildConstant(constant),
2260 operator: operator, 2260 operator: operator,
2261 setValue: (value) {}, // The binary operator will throw before this. 2261 setValue: (value) {}, // The binary operator will throw before this.
2262 isPrefix: false); 2262 isPrefix: false);
2263 } 2263 }
2264 2264
2265 @override 2265 @override
2266 ir.Primitive errorDynamicTypeLiteralPrefix( 2266 ir.Primitive visitDynamicTypeLiteralPrefix(
2267 ast.Send node, 2267 ast.Send node,
2268 ConstantExpression constant, 2268 ConstantExpression constant,
2269 op.IncDecOperator operator, _) { 2269 op.IncDecOperator operator, _) {
2270 return translatePrefixPostfix( 2270 return translatePrefixPostfix(
2271 getValue: () => irBuilder.buildConstant(constant), 2271 getValue: () => irBuilder.buildConstant(constant),
2272 operator: operator, 2272 operator: operator,
2273 setValue: (value) {}, // The binary operator will throw before this. 2273 setValue: (value) {}, // The binary operator will throw before this.
2274 isPrefix: true); 2274 isPrefix: true);
2275 } 2275 }
2276 2276
2277 @override 2277 @override
2278 ir.Primitive errorFinalLocalVariableCompound( 2278 ir.Primitive visitFinalLocalVariableCompound(
2279 ast.Send node, 2279 ast.Send node,
2280 LocalVariableElement variable, 2280 LocalVariableElement variable,
2281 op.AssignmentOperator operator, 2281 op.AssignmentOperator operator,
2282 ast.Node rhs, _) { 2282 ast.Node rhs, _) {
2283 Selector selector = new Selector.setter(variable.name, null); 2283 Selector selector = new Selector.setter(variable.name, null);
2284 return translateCompound( 2284 return translateCompound(
2285 getValue: () => irBuilder.buildLocalVariableGet(variable), 2285 getValue: () => irBuilder.buildLocalVariableGet(variable),
2286 operator: operator, 2286 operator: operator,
2287 rhs: rhs, 2287 rhs: rhs,
2288 setValue: (value) => buildStaticNoSuchMethod(selector, [value])); 2288 setValue: (value) => buildStaticNoSuchMethod(selector, [value]));
2289 } 2289 }
2290 2290
2291 @override 2291 @override
2292 ir.Primitive errorFinalLocalVariableSet( 2292 ir.Primitive errorFinalLocalVariableSet(
2293 ast.SendSet node, 2293 ast.SendSet node,
2294 LocalVariableElement variable, 2294 LocalVariableElement variable,
2295 ast.Node rhs, _) { 2295 ast.Node rhs, _) {
2296 Selector selector = new Selector.setter(variable.name, null); 2296 Selector selector = new Selector.setter(variable.name, null);
2297 return buildStaticNoSuchMethod(selector, [visit(rhs)]); 2297 return buildStaticNoSuchMethod(selector, [visit(rhs)]);
2298 } 2298 }
2299 2299
2300 @override 2300 @override
2301 ir.Primitive errorFinalParameterCompound( 2301 ir.Primitive visitFinalParameterCompound(
2302 ast.Send node, 2302 ast.Send node,
2303 ParameterElement parameter, 2303 ParameterElement parameter,
2304 op.AssignmentOperator operator, 2304 op.AssignmentOperator operator,
2305 ast.Node rhs, _) { 2305 ast.Node rhs, _) {
2306 Selector selector = new Selector.setter(parameter.name, null); 2306 Selector selector = new Selector.setter(parameter.name, null);
2307 return translateCompound( 2307 return translateCompound(
2308 getValue: () => irBuilder.buildLocalVariableGet(parameter), 2308 getValue: () => irBuilder.buildLocalVariableGet(parameter),
2309 operator: operator, 2309 operator: operator,
2310 rhs: rhs, 2310 rhs: rhs,
2311 setValue: (value) => buildStaticNoSuchMethod(selector, [value])); 2311 setValue: (value) => buildStaticNoSuchMethod(selector, [value]));
2312 } 2312 }
2313 2313
2314 @override 2314 @override
2315 ir.Primitive errorFinalParameterSet( 2315 ir.Primitive errorFinalParameterSet(
2316 ast.SendSet node, 2316 ast.SendSet node,
2317 ParameterElement parameter, 2317 ParameterElement parameter,
2318 ast.Node rhs, _) { 2318 ast.Node rhs, _) {
2319 Selector selector = new Selector.setter(parameter.name, null); 2319 Selector selector = new Selector.setter(parameter.name, null);
2320 return buildStaticNoSuchMethod(selector, [visit(rhs)]); 2320 return buildStaticNoSuchMethod(selector, [visit(rhs)]);
2321 } 2321 }
2322 2322
2323 @override 2323 @override
2324 ir.Primitive errorFinalStaticFieldCompound( 2324 ir.Primitive visitStaticFinalFieldCompound(
2325 ast.Send node, 2325 ast.Send node,
2326 FieldElement field, 2326 FieldElement field,
2327 op.AssignmentOperator operator, 2327 op.AssignmentOperator operator,
2328 ast.Node rhs, _) { 2328 ast.Node rhs, _) {
2329 return translateCompound( 2329 return translateCompound(
2330 getValue: () => irBuilder.buildStaticFieldGet(field), 2330 getValue: () => irBuilder.buildStaticFieldGet(field),
2331 operator: operator, 2331 operator: operator,
2332 rhs: rhs, 2332 rhs: rhs,
2333 setValue: (value) => buildStaticNoSuchMethod( 2333 setValue: (value) => buildStaticNoSuchMethod(
2334 new Selector.setter(field.name, field.library), [value])); 2334 new Selector.setter(field.name, field.library), [value]));
2335 } 2335 }
2336 2336
2337 @override 2337 @override
2338 ir.Primitive errorFinalStaticFieldSet( 2338 ir.Primitive errorFinalStaticFieldSet(
2339 ast.SendSet node, 2339 ast.SendSet node,
2340 FieldElement field, 2340 FieldElement field,
2341 ast.Node rhs, _) { 2341 ast.Node rhs, _) {
2342 // TODO(asgerf): Include class name somehow? 2342 // TODO(asgerf): Include class name somehow?
2343 return buildStaticNoSuchMethod( 2343 return buildStaticNoSuchMethod(
2344 new Selector.setter(field.name, field.library), 2344 new Selector.setter(field.name, field.library),
2345 [visit(rhs)]); 2345 [visit(rhs)]);
2346 } 2346 }
2347 2347
2348 @override 2348 @override
2349 ir.Primitive errorFinalSuperFieldCompound( 2349 ir.Primitive visitFinalSuperFieldCompound(
2350 ast.Send node, 2350 ast.Send node,
2351 FieldElement field, 2351 FieldElement field,
2352 op.AssignmentOperator operator, 2352 op.AssignmentOperator operator,
2353 ast.Node rhs, _) { 2353 ast.Node rhs, _) {
2354 Selector selector = useSelectorTypeOfNode( 2354 Selector selector = useSelectorTypeOfNode(
2355 new Selector.setter(field.name, field.library), 2355 new Selector.setter(field.name, field.library),
2356 node); 2356 node);
2357 return translateCompound( 2357 return translateCompound(
2358 getValue: () => irBuilder.buildSuperFieldGet(field), 2358 getValue: () => irBuilder.buildSuperFieldGet(field),
2359 operator: operator, 2359 operator: operator,
2360 rhs: rhs, 2360 rhs: rhs,
2361 setValue: (value) => buildInstanceNoSuchMethod(selector, [value])); 2361 setValue: (value) => buildInstanceNoSuchMethod(selector, [value]));
2362 } 2362 }
2363 2363
2364 @override 2364 @override
2365 ir.Primitive errorFinalSuperFieldSet( 2365 ir.Primitive errorFinalSuperFieldSet(
2366 ast.SendSet node, 2366 ast.SendSet node,
2367 FieldElement field, 2367 FieldElement field,
2368 ast.Node rhs, _) { 2368 ast.Node rhs, _) {
2369 Selector selector = useSelectorTypeOfNode( 2369 Selector selector = useSelectorTypeOfNode(
2370 new Selector.setter(field.name, field.library), 2370 new Selector.setter(field.name, field.library),
2371 node); 2371 node);
2372 return buildInstanceNoSuchMethod(selector, [visit(rhs)]); 2372 return buildInstanceNoSuchMethod(selector, [visit(rhs)]);
2373 } 2373 }
2374 2374
2375 @override 2375 @override
2376 ir.Primitive errorFinalTopLevelFieldCompound( 2376 ir.Primitive visitTopLevelFinalFieldCompound(
2377 ast.Send node, 2377 ast.Send node,
2378 FieldElement field, 2378 FieldElement field,
2379 op.AssignmentOperator operator, 2379 op.AssignmentOperator operator,
2380 ast.Node rhs, _) { 2380 ast.Node rhs, _) {
2381 return translateCompound( 2381 return translateCompound(
2382 getValue: () => irBuilder.buildStaticFieldGet(field), 2382 getValue: () => irBuilder.buildStaticFieldGet(field),
2383 operator: operator, 2383 operator: operator,
2384 rhs: rhs, 2384 rhs: rhs,
2385 setValue: (value) => buildStaticNoSuchMethod( 2385 setValue: (value) => buildStaticNoSuchMethod(
2386 new Selector.setter(field.name, field.library), [value])); 2386 new Selector.setter(field.name, field.library), [value]));
2387 } 2387 }
2388 2388
2389 @override 2389 @override
2390 ir.Primitive errorFinalTopLevelFieldSet( 2390 ir.Primitive errorFinalTopLevelFieldSet(
2391 ast.SendSet node, 2391 ast.SendSet node,
2392 FieldElement field, 2392 FieldElement field,
2393 ast.Node rhs, _) { 2393 ast.Node rhs, _) {
2394 return buildStaticNoSuchMethod( 2394 return buildStaticNoSuchMethod(
2395 new Selector.setter(field.name, field.library), 2395 new Selector.setter(field.name, field.library),
2396 [visit(rhs)]); 2396 [visit(rhs)]);
2397 } 2397 }
2398 2398
2399 @override 2399 @override
2400 ir.Primitive errorLocalFunctionCompound( 2400 ir.Primitive visitLocalFunctionCompound(
2401 ast.Send node, 2401 ast.Send node,
2402 LocalFunctionElement function, 2402 LocalFunctionElement function,
2403 op.AssignmentOperator operator, 2403 op.AssignmentOperator operator,
2404 ast.Node rhs, _) { 2404 ast.Node rhs, _) {
2405 return translateCompound( 2405 return translateCompound(
2406 getValue: () => irBuilder.buildLocalFunctionGet(function), 2406 getValue: () => irBuilder.buildLocalFunctionGet(function),
2407 operator: operator, 2407 operator: operator,
2408 rhs: rhs, 2408 rhs: rhs,
2409 setValue: (value) {}); // Binary operator will throw before this. 2409 setValue: (value) {}); // Binary operator will throw before this.
2410 } 2410 }
2411 2411
2412 @override 2412 @override
2413 ir.Primitive errorLocalFunctionPostfix( 2413 ir.Primitive visitLocalFunctionPostfix(
2414 ast.Send node, 2414 ast.Send node,
2415 LocalFunctionElement function, 2415 LocalFunctionElement function,
2416 op.IncDecOperator operator, 2416 op.IncDecOperator operator,
2417 _) { 2417 _) {
2418 return translatePrefixPostfix( 2418 return translatePrefixPostfix(
2419 getValue: () => irBuilder.buildLocalFunctionGet(function), 2419 getValue: () => irBuilder.buildLocalFunctionGet(function),
2420 operator: operator, 2420 operator: operator,
2421 setValue: (value) {}, // Binary operator will throw before this. 2421 setValue: (value) {}, // Binary operator will throw before this.
2422 isPrefix: false); 2422 isPrefix: false);
2423 } 2423 }
2424 2424
2425 @override 2425 @override
2426 ir.Primitive errorLocalFunctionPrefix( 2426 ir.Primitive visitLocalFunctionPrefix(
2427 ast.Send node, 2427 ast.Send node,
2428 LocalFunctionElement function, 2428 LocalFunctionElement function,
2429 op.IncDecOperator operator, 2429 op.IncDecOperator operator,
2430 _) { 2430 _) {
2431 return translatePrefixPostfix( 2431 return translatePrefixPostfix(
2432 getValue: () => irBuilder.buildLocalFunctionGet(function), 2432 getValue: () => irBuilder.buildLocalFunctionGet(function),
2433 operator: operator, 2433 operator: operator,
2434 setValue: (value) {}, // Binary operator will throw before this. 2434 setValue: (value) {}, // Binary operator will throw before this.
2435 isPrefix: true); 2435 isPrefix: true);
2436 } 2436 }
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
2534 List<ir.Primitive> args = 2534 List<ir.Primitive> args =
2535 translateDynamicArguments(arguments, callStructure); 2535 translateDynamicArguments(arguments, callStructure);
2536 Name name = new Name(setter.name, setter.library); 2536 Name name = new Name(setter.name, setter.library);
2537 Selector selector = useSelectorTypeOfNode( 2537 Selector selector = useSelectorTypeOfNode(
2538 new Selector(SelectorKind.CALL, name, callStructure), 2538 new Selector(SelectorKind.CALL, name, callStructure),
2539 node); 2539 node);
2540 return buildInstanceNoSuchMethod(selector, args); 2540 return buildInstanceNoSuchMethod(selector, args);
2541 } 2541 }
2542 2542
2543 @override 2543 @override
2544 ir.Primitive errorTypeVariableTypeLiteralCompound( 2544 ir.Primitive visitTypeVariableTypeLiteralCompound(
2545 ast.Send node, 2545 ast.Send node,
2546 TypeVariableElement element, 2546 TypeVariableElement element,
2547 op.AssignmentOperator operator, 2547 op.AssignmentOperator operator,
2548 ast.Node rhs, _) { 2548 ast.Node rhs, _) {
2549 return translateCompound( 2549 return translateCompound(
2550 getValue: () => irBuilder.buildReifyTypeVariable(element.type), 2550 getValue: () => irBuilder.buildReifyTypeVariable(element.type),
2551 operator: operator, 2551 operator: operator,
2552 rhs: rhs, 2552 rhs: rhs,
2553 setValue: (value) {}); // The binary operator will throw before this. 2553 setValue: (value) {}); // The binary operator will throw before this.
2554 } 2554 }
2555 2555
2556 @override 2556 @override
2557 ir.Primitive errorTypeVariableTypeLiteralPostfix( 2557 ir.Primitive visitTypeVariableTypeLiteralPostfix(
2558 ast.Send node, 2558 ast.Send node,
2559 TypeVariableElement element, 2559 TypeVariableElement element,
2560 op.IncDecOperator operator, _) { 2560 op.IncDecOperator operator, _) {
2561 return translatePrefixPostfix( 2561 return translatePrefixPostfix(
2562 getValue: () => irBuilder.buildReifyTypeVariable(element.type), 2562 getValue: () => irBuilder.buildReifyTypeVariable(element.type),
2563 operator: operator, 2563 operator: operator,
2564 setValue: (value) {}, // The binary operator will throw before this. 2564 setValue: (value) {}, // The binary operator will throw before this.
2565 isPrefix: false); 2565 isPrefix: false);
2566 } 2566 }
2567 2567
2568 @override 2568 @override
2569 ir.Primitive errorTypeVariableTypeLiteralPrefix( 2569 ir.Primitive visitTypeVariableTypeLiteralPrefix(
2570 ast.Send node, 2570 ast.Send node,
2571 TypeVariableElement element, 2571 TypeVariableElement element,
2572 op.IncDecOperator operator, _) { 2572 op.IncDecOperator operator, _) {
2573 return translatePrefixPostfix( 2573 return translatePrefixPostfix(
2574 getValue: () => irBuilder.buildReifyTypeVariable(element.type), 2574 getValue: () => irBuilder.buildReifyTypeVariable(element.type),
2575 operator: operator, 2575 operator: operator,
2576 setValue: (value) {}, // The binary operator will throw before this. 2576 setValue: (value) {}, // The binary operator will throw before this.
2577 isPrefix: true); 2577 isPrefix: true);
2578 } 2578 }
2579 2579
2580 @override 2580 @override
2581 ir.Primitive errorTypedefTypeLiteralCompound( 2581 ir.Primitive visitTypedefTypeLiteralCompound(
2582 ast.Send node, 2582 ast.Send node,
2583 ConstantExpression constant, 2583 ConstantExpression constant,
2584 op.AssignmentOperator operator, 2584 op.AssignmentOperator operator,
2585 ast.Node rhs, _) { 2585 ast.Node rhs, _) {
2586 return translateCompound( 2586 return translateCompound(
2587 getValue: () => irBuilder.buildConstant(constant), 2587 getValue: () => irBuilder.buildConstant(constant),
2588 operator: operator, 2588 operator: operator,
2589 rhs: rhs, 2589 rhs: rhs,
2590 setValue: (value) {}); // The binary operator will throw before this. 2590 setValue: (value) {}); // The binary operator will throw before this.
2591 } 2591 }
2592 2592
2593 @override 2593 @override
2594 ir.Primitive errorTypedefTypeLiteralPostfix( 2594 ir.Primitive visitTypedefTypeLiteralPostfix(
2595 ast.Send node, 2595 ast.Send node,
2596 ConstantExpression constant, 2596 ConstantExpression constant,
2597 op.IncDecOperator operator, _) { 2597 op.IncDecOperator operator, _) {
2598 return translatePrefixPostfix( 2598 return translatePrefixPostfix(
2599 getValue: () => irBuilder.buildConstant(constant), 2599 getValue: () => irBuilder.buildConstant(constant),
2600 operator: operator, 2600 operator: operator,
2601 setValue: (value) {}, // The binary operator will throw before this. 2601 setValue: (value) {}, // The binary operator will throw before this.
2602 isPrefix: false); 2602 isPrefix: false);
2603 } 2603 }
2604 2604
2605 @override 2605 @override
2606 ir.Primitive errorTypedefTypeLiteralPrefix( 2606 ir.Primitive visitTypedefTypeLiteralPrefix(
2607 ast.Send node, 2607 ast.Send node,
2608 TypeConstantExpression constant, 2608 TypeConstantExpression constant,
2609 op.IncDecOperator operator, _) { 2609 op.IncDecOperator operator, _) {
2610 return translatePrefixPostfix( 2610 return translatePrefixPostfix(
2611 getValue: () => irBuilder.buildConstant(constant), 2611 getValue: () => irBuilder.buildConstant(constant),
2612 operator: operator, 2612 operator: operator,
2613 setValue: (value) {}, // The binary operator will throw before this. 2613 setValue: (value) {}, // The binary operator will throw before this.
2614 isPrefix: true); 2614 isPrefix: true);
2615 } 2615 }
2616 2616
(...skipping 1081 matching lines...) Expand 10 before | Expand all | Expand 10 after
3698 node.body = replacementFor(node.body); 3698 node.body = replacementFor(node.body);
3699 } 3699 }
3700 } 3700 }
3701 3701
3702 /// Visit a just-deleted subterm and unlink all [Reference]s in it. 3702 /// Visit a just-deleted subterm and unlink all [Reference]s in it.
3703 class RemovalVisitor extends ir.RecursiveVisitor { 3703 class RemovalVisitor extends ir.RecursiveVisitor {
3704 processReference(ir.Reference reference) { 3704 processReference(ir.Reference reference) {
3705 reference.unlink(); 3705 reference.unlink();
3706 } 3706 }
3707 } 3707 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698