| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 import '../common.dart'; | 5 import '../common.dart'; |
| 6 import '../common_elements.dart'; | 6 import '../common_elements.dart'; |
| 7 import '../constants/values.dart'; | 7 import '../constants/values.dart'; |
| 8 import '../elements/elements.dart'; | 8 import '../elements/elements.dart'; |
| 9 import '../elements/types.dart' show DartType, InterfaceType, TypeVariableType; | 9 import '../elements/types.dart' show TypeVariableType; |
| 10 import '../elements/entities.dart'; | 10 import '../elements/entities.dart'; |
| 11 import '../elements/resolution_types.dart'; | 11 import '../elements/resolution_types.dart'; |
| 12 import '../io/code_output.dart'; | 12 import '../io/code_output.dart'; |
| 13 import '../js/js.dart' as jsAst; | 13 import '../js/js.dart' as jsAst; |
| 14 import '../js/js.dart' show js; | 14 import '../js/js.dart' show js; |
| 15 import '../js_emitter/code_emitter_task.dart'; | 15 import '../js_emitter/code_emitter_task.dart'; |
| 16 import '../options.dart'; | 16 import '../options.dart'; |
| 17 import '../universe/world_builder.dart'; | 17 import '../universe/world_builder.dart'; |
| 18 import 'constant_system_javascript.dart'; | 18 import 'constant_system_javascript.dart'; |
| 19 import 'js_backend.dart'; | 19 import 'js_backend.dart'; |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 | 267 |
| 268 if (_rtiNeed.classNeedsRtiField(classElement)) { | 268 if (_rtiNeed.classNeedsRtiField(classElement)) { |
| 269 arguments.add(_reifiedTypeArguments(constant.type)); | 269 arguments.add(_reifiedTypeArguments(constant.type)); |
| 270 } | 270 } |
| 271 | 271 |
| 272 jsAst.Expression constructor = _emitter.constructorAccess(classElement); | 272 jsAst.Expression constructor = _emitter.constructorAccess(classElement); |
| 273 jsAst.Expression value = new jsAst.New(constructor, arguments); | 273 jsAst.Expression value = new jsAst.New(constructor, arguments); |
| 274 return value; | 274 return value; |
| 275 } | 275 } |
| 276 | 276 |
| 277 jsAst.PropertyAccess getHelperProperty(FunctionEntity helper) { | 277 jsAst.PropertyAccess getHelperProperty(MethodElement helper) { |
| 278 return _emitter.staticFunctionAccess(helper); | 278 return _emitter.staticFunctionAccess(helper); |
| 279 } | 279 } |
| 280 | 280 |
| 281 @override | 281 @override |
| 282 jsAst.Expression visitType(TypeConstantValue constant, [_]) { | 282 jsAst.Expression visitType(TypeConstantValue constant, [_]) { |
| 283 DartType type = constant.representedType; | 283 ResolutionDartType type = constant.representedType; |
| 284 jsAst.Name typeName = _namer.runtimeTypeName(type.element); | 284 jsAst.Name typeName = _namer.runtimeTypeName(type.element); |
| 285 return new jsAst.Call(getHelperProperty(_commonElements.createRuntimeType), | 285 return new jsAst.Call(getHelperProperty(_commonElements.createRuntimeType), |
| 286 [js.quoteName(typeName)]); | 286 [js.quoteName(typeName)]); |
| 287 } | 287 } |
| 288 | 288 |
| 289 @override | 289 @override |
| 290 jsAst.Expression visitInterceptor(InterceptorConstantValue constant, [_]) { | 290 jsAst.Expression visitInterceptor(InterceptorConstantValue constant, [_]) { |
| 291 ClassEntity interceptorClass = constant.cls; | 291 ClassEntity interceptorClass = constant.cls; |
| 292 return _task.interceptorPrototypeAccess(interceptorClass); | 292 return _task.interceptorPrototypeAccess(interceptorClass); |
| 293 } | 293 } |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 326 } | 326 } |
| 327 jsAst.New instantiation = new jsAst.New(constructor, fields); | 327 jsAst.New instantiation = new jsAst.New(constructor, fields); |
| 328 return instantiation; | 328 return instantiation; |
| 329 } | 329 } |
| 330 | 330 |
| 331 String stripComments(String rawJavaScript) { | 331 String stripComments(String rawJavaScript) { |
| 332 return rawJavaScript.replaceAll(COMMENT_RE, ''); | 332 return rawJavaScript.replaceAll(COMMENT_RE, ''); |
| 333 } | 333 } |
| 334 | 334 |
| 335 jsAst.Expression maybeAddTypeArguments( | 335 jsAst.Expression maybeAddTypeArguments( |
| 336 InterfaceType type, jsAst.Expression value) { | 336 ResolutionInterfaceType type, jsAst.Expression value) { |
| 337 if (type is InterfaceType && | 337 if (type is ResolutionInterfaceType && |
| 338 !type.treatAsRaw && | 338 !type.treatAsRaw && |
| 339 _rtiNeed.classNeedsRti(type.element)) { | 339 _rtiNeed.classNeedsRti(type.element)) { |
| 340 return new jsAst.Call( | 340 return new jsAst.Call( |
| 341 getHelperProperty(_commonElements.setRuntimeTypeInfo), | 341 getHelperProperty(_commonElements.setRuntimeTypeInfo), |
| 342 [value, _reifiedTypeArguments(type)]); | 342 [value, _reifiedTypeArguments(type)]); |
| 343 } | 343 } |
| 344 return value; | 344 return value; |
| 345 } | 345 } |
| 346 | 346 |
| 347 jsAst.Expression _reifiedTypeArguments(InterfaceType type) { | 347 jsAst.Expression _reifiedTypeArguments(ResolutionInterfaceType type) { |
| 348 jsAst.Expression unexpected(TypeVariableType variable) { | 348 jsAst.Expression unexpected(TypeVariableType _variable) { |
| 349 ResolutionTypeVariableType variable = _variable; |
| 349 throw new SpannableAssertionFailure( | 350 throw new SpannableAssertionFailure( |
| 350 NO_LOCATION_SPANNABLE, | 351 NO_LOCATION_SPANNABLE, |
| 351 "Unexpected type variable '${variable.getStringAsDeclared(null)}'" | 352 "Unexpected type variable '${variable.getStringAsDeclared(null)}'" |
| 352 " in constant type '${type.getStringAsDeclared(null)}'"); | 353 " in constant type '${type.getStringAsDeclared(null)}'"); |
| 353 } | 354 } |
| 354 | 355 |
| 355 List<jsAst.Expression> arguments = <jsAst.Expression>[]; | 356 List<jsAst.Expression> arguments = <jsAst.Expression>[]; |
| 356 for (DartType argument in type.typeArguments) { | 357 for (ResolutionDartType argument in type.typeArguments) { |
| 357 arguments.add( | 358 arguments.add( |
| 358 _rtiEncoder.getTypeRepresentation(_emitter, argument, unexpected)); | 359 _rtiEncoder.getTypeRepresentation(_emitter, argument, unexpected)); |
| 359 } | 360 } |
| 360 return new jsAst.ArrayInitializer(arguments); | 361 return new jsAst.ArrayInitializer(arguments); |
| 361 } | 362 } |
| 362 | 363 |
| 363 @override | 364 @override |
| 364 jsAst.Expression visitDeferred(DeferredConstantValue constant, [_]) { | 365 jsAst.Expression visitDeferred(DeferredConstantValue constant, [_]) { |
| 365 return constantReferenceGenerator(constant.referenced); | 366 return constantReferenceGenerator(constant.referenced); |
| 366 } | 367 } |
| 367 } | 368 } |
| OLD | NEW |