| 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 part of dart2js.js_emitter.full_emitter; | 5 part of dart2js.js_emitter.full_emitter; |
| 6 | 6 |
| 7 class ClassEmitter extends CodeEmitterHelper { | 7 class ClassEmitter extends CodeEmitterHelper { |
| 8 | 8 |
| 9 ClassStubGenerator get _stubGenerator => | 9 ClassStubGenerator get _stubGenerator => |
| 10 new ClassStubGenerator(compiler, namer, backend); | 10 new ClassStubGenerator(compiler, namer, backend); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 | 55 |
| 56 emitClassBuilderWithReflectionData(cls, builder, enclosingBuilder, | 56 emitClassBuilderWithReflectionData(cls, builder, enclosingBuilder, |
| 57 fragment); | 57 fragment); |
| 58 } | 58 } |
| 59 /** | 59 /** |
| 60 * Emits the precompiled constructor when in CSP mode. | 60 * Emits the precompiled constructor when in CSP mode. |
| 61 */ | 61 */ |
| 62 void emitConstructorsForCSP(Class cls) { | 62 void emitConstructorsForCSP(Class cls) { |
| 63 List<jsAst.Name> fieldNames = <jsAst.Name>[]; | 63 List<jsAst.Name> fieldNames = <jsAst.Name>[]; |
| 64 | 64 |
| 65 if (!compiler.useContentSecurityPolicy) return; | 65 if (!compiler.options.useContentSecurityPolicy) return; |
| 66 | 66 |
| 67 if (!cls.onlyForRti && !cls.isNative) { | 67 if (!cls.onlyForRti && !cls.isNative) { |
| 68 fieldNames = cls.fields.map((Field field) => field.name).toList(); | 68 fieldNames = cls.fields.map((Field field) => field.name).toList(); |
| 69 } | 69 } |
| 70 | 70 |
| 71 ClassElement classElement = cls.element; | 71 ClassElement classElement = cls.element; |
| 72 | 72 |
| 73 jsAst.Expression constructorAst = | 73 jsAst.Expression constructorAst = |
| 74 _stubGenerator.generateClassConstructor(classElement, fieldNames); | 74 _stubGenerator.generateClassConstructor(classElement, fieldNames); |
| 75 | 75 |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 compiler.dumpInfoTask.registerElementAst(member, | 201 compiler.dumpInfoTask.registerElementAst(member, |
| 202 builder.addProperty(setterName, code)); | 202 builder.addProperty(setterName, code)); |
| 203 generateReflectionDataForFieldGetterOrSetter( | 203 generateReflectionDataForFieldGetterOrSetter( |
| 204 member, setterName, builder, isGetter: false); | 204 member, setterName, builder, isGetter: false); |
| 205 } | 205 } |
| 206 } | 206 } |
| 207 | 207 |
| 208 /// Emits getters/setters for fields if compiling in CSP mode. | 208 /// Emits getters/setters for fields if compiling in CSP mode. |
| 209 void emitClassGettersSettersForCSP(Class cls, ClassBuilder builder) { | 209 void emitClassGettersSettersForCSP(Class cls, ClassBuilder builder) { |
| 210 | 210 |
| 211 if (!compiler.useContentSecurityPolicy || cls.onlyForRti) return; | 211 if (!compiler.options.useContentSecurityPolicy || cls.onlyForRti) return; |
| 212 | 212 |
| 213 for (Field field in cls.fields) { | 213 for (Field field in cls.fields) { |
| 214 Element member = field.element; | 214 Element member = field.element; |
| 215 reporter.withCurrentElement(member, () { | 215 reporter.withCurrentElement(member, () { |
| 216 if (field.needsGetter) { | 216 if (field.needsGetter) { |
| 217 emitGetterForCSP(member, field.name, field.accessorName, builder); | 217 emitGetterForCSP(member, field.name, field.accessorName, builder); |
| 218 } | 218 } |
| 219 if (field.needsUncheckedSetter) { | 219 if (field.needsUncheckedSetter) { |
| 220 emitSetterForCSP(member, field.name, field.accessorName, builder); | 220 emitSetterForCSP(member, field.name, field.accessorName, builder); |
| 221 } | 221 } |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 : new Selector.setter( | 427 : new Selector.setter( |
| 428 new Name(member.name, member.library, isSetter: true)); | 428 new Name(member.name, member.library, isSetter: true)); |
| 429 String reflectionName = emitter.getReflectionName(selector, name); | 429 String reflectionName = emitter.getReflectionName(selector, name); |
| 430 if (reflectionName != null) { | 430 if (reflectionName != null) { |
| 431 var reflectable = | 431 var reflectable = |
| 432 js(backend.isAccessibleByReflection(member) ? '1' : '0'); | 432 js(backend.isAccessibleByReflection(member) ? '1' : '0'); |
| 433 builder.addPropertyByName('+$reflectionName', reflectable); | 433 builder.addPropertyByName('+$reflectionName', reflectable); |
| 434 } | 434 } |
| 435 } | 435 } |
| 436 } | 436 } |
| OLD | NEW |