| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |