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

Unified Diff: pkg/compiler/lib/src/js_model/elements.dart

Issue 2969013002: Support creating elements from IR nodes in JsKernelToElementMap (Closed)
Patch Set: Updated cf. comments Created 3 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/common_elements.dart ('k') | pkg/compiler/lib/src/js_model/js_strategy.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/js_model/elements.dart
diff --git a/pkg/compiler/lib/src/js_model/elements.dart b/pkg/compiler/lib/src/js_model/elements.dart
index 32555c22c764e444f389bd3793b0674d6a53c508..aea3138f86274fccef6cf1f94b80d1cb29ce7885 100644
--- a/pkg/compiler/lib/src/js_model/elements.dart
+++ b/pkg/compiler/lib/src/js_model/elements.dart
@@ -97,23 +97,106 @@ abstract class JsToFrontendMapBase implements JsToFrontendMap {
}
class JsElementCreatorMixin {
- LibraryEntity createLibrary(IndexedLibrary library) {
- return new JLibrary(
+ IndexedLibrary createLibrary(
+ int libraryIndex, String name, Uri canonicalUri) {
+ return new JLibrary(libraryIndex, name, canonicalUri);
+ }
+
+ IndexedClass createClass(LibraryEntity library, int classIndex, String name,
+ {bool isAbstract}) {
+ return new JClass(library, classIndex, name, isAbstract: isAbstract);
+ }
+
+ TypeVariableEntity createTypeVariable(
+ Entity typeDeclaration, String name, int index) {
+ throw new UnsupportedError('JsElementCreatorMixin.createTypeVariable');
+ }
+
+ IndexedConstructor createGenerativeConstructor(
+ int memberIndex,
+ ClassEntity enclosingClass,
+ Name name,
+ ParameterStructure parameterStructure,
+ {bool isExternal,
+ bool isConst}) {
+ return new JGenerativeConstructor(
+ memberIndex, enclosingClass, name, parameterStructure,
+ isExternal: isExternal, isConst: isConst);
+ }
+
+ IndexedConstructor createFactoryConstructor(
+ int memberIndex,
+ ClassEntity enclosingClass,
+ Name name,
+ ParameterStructure parameterStructure,
+ {bool isExternal,
+ bool isConst,
+ bool isFromEnvironmentConstructor}) {
+ return new JFactoryConstructor(
+ memberIndex, enclosingClass, name, parameterStructure,
+ isExternal: isExternal,
+ isConst: isConst,
+ isFromEnvironmentConstructor: isFromEnvironmentConstructor);
+ }
+
+ IndexedFunction createGetter(int memberIndex, LibraryEntity library,
+ ClassEntity enclosingClass, Name name, AsyncMarker asyncMarker,
+ {bool isStatic, bool isExternal, bool isAbstract}) {
+ return new JGetter(memberIndex, library, enclosingClass, name, asyncMarker,
+ isStatic: isStatic, isExternal: isExternal, isAbstract: isAbstract);
+ }
+
+ IndexedFunction createMethod(
+ int memberIndex,
+ LibraryEntity library,
+ ClassEntity enclosingClass,
+ Name name,
+ ParameterStructure parameterStructure,
+ AsyncMarker asyncMarker,
+ {bool isStatic,
+ bool isExternal,
+ bool isAbstract}) {
+ return new JMethod(memberIndex, library, enclosingClass, name,
+ parameterStructure, asyncMarker,
+ isStatic: isStatic, isExternal: isExternal, isAbstract: isAbstract);
+ }
+
+ IndexedFunction createSetter(int memberIndex, LibraryEntity library,
+ ClassEntity enclosingClass, Name name,
+ {bool isStatic, bool isExternal, bool isAbstract}) {
+ return new JSetter(memberIndex, library, enclosingClass, name,
+ isStatic: isStatic, isExternal: isExternal, isAbstract: isAbstract);
+ }
+
+ IndexedField createField(int memberIndex, LibraryEntity library,
+ ClassEntity enclosingClass, Name name,
+ {bool isStatic, bool isAssignable, bool isConst}) {
+ return new JField(memberIndex, library, enclosingClass, name,
+ isStatic: isStatic, isAssignable: isAssignable, isConst: isConst);
+ }
+
+ Local createLocalFunction(String name, MemberEntity memberContext,
+ Entity executableContext, FunctionType functionType) {
+ throw new UnsupportedError('JsElementCreatorMixin.createLocalFunction');
+ }
+
+ LibraryEntity convertLibrary(IndexedLibrary library) {
+ return createLibrary(
library.libraryIndex, library.name, library.canonicalUri);
}
- ClassEntity createClass(LibraryEntity library, IndexedClass cls) {
- return new JClass(library, cls.classIndex, cls.name,
+ ClassEntity convertClass(LibraryEntity library, IndexedClass cls) {
+ return createClass(library, cls.classIndex, cls.name,
isAbstract: cls.isAbstract);
}
- MemberEntity createMember(
+ MemberEntity convertMember(
LibraryEntity library, ClassEntity cls, IndexedMember member) {
Name memberName = new Name(member.memberName.text, library,
isSetter: member.memberName.isSetter);
if (member.isField) {
IndexedField field = member;
- return new JField(member.memberIndex, library, cls, memberName,
+ return createField(member.memberIndex, library, cls, memberName,
isStatic: field.isStatic,
isAssignable: field.isAssignable,
isConst: field.isConst);
@@ -121,33 +204,33 @@ class JsElementCreatorMixin {
IndexedConstructor constructor = member;
if (constructor.isFactoryConstructor) {
// TODO(redemption): This should be a JFunction.
- return new JFactoryConstructor(
+ return createFactoryConstructor(
member.memberIndex, cls, memberName, constructor.parameterStructure,
isExternal: constructor.isExternal,
isConst: constructor.isConst,
isFromEnvironmentConstructor:
constructor.isFromEnvironmentConstructor);
} else {
- return new JGenerativeConstructor(
+ return createGenerativeConstructor(
member.memberIndex, cls, memberName, constructor.parameterStructure,
isExternal: constructor.isExternal, isConst: constructor.isConst);
}
} else if (member.isGetter) {
IndexedFunction getter = member;
- return new JGetter(
+ return createGetter(
member.memberIndex, library, cls, memberName, getter.asyncMarker,
isStatic: getter.isStatic,
isExternal: getter.isExternal,
isAbstract: getter.isAbstract);
} else if (member.isSetter) {
IndexedFunction setter = member;
- return new JSetter(member.memberIndex, library, cls, memberName,
+ return createSetter(member.memberIndex, library, cls, memberName,
isStatic: setter.isStatic,
isExternal: setter.isExternal,
isAbstract: setter.isAbstract);
} else {
IndexedFunction function = member;
- return new JMethod(member.memberIndex, library, cls, memberName,
+ return createMethod(member.memberIndex, library, cls, memberName,
function.parameterStructure, function.asyncMarker,
isStatic: function.isStatic,
isExternal: function.isExternal,
@@ -207,6 +290,8 @@ class TypeConverter implements DartTypeVisitor<DartType, EntityConverter> {
}
}
+const String jsElementPrefix = 'j';
+
class JLibrary implements LibraryEntity, IndexedLibrary {
/// Library index used for fast lookup in [JsToFrontendMapImpl].
final int libraryIndex;
@@ -215,7 +300,7 @@ class JLibrary implements LibraryEntity, IndexedLibrary {
JLibrary(this.libraryIndex, this.name, this.canonicalUri);
- String toString() => 'library($name)';
+ String toString() => '${jsElementPrefix}library($name)';
}
class JClass implements ClassEntity, IndexedClass {
@@ -232,7 +317,7 @@ class JClass implements ClassEntity, IndexedClass {
@override
bool get isClosure => false;
- String toString() => 'class($name)';
+ String toString() => '${jsElementPrefix}class($name)';
}
abstract class JMember implements MemberEntity, IndexedMember {
@@ -286,8 +371,8 @@ abstract class JMember implements MemberEntity, IndexedMember {
String get _kind;
- String toString() =>
- '$_kind(${enclosingClass != null ? '${enclosingClass.name}.' : ''}$name)';
+ String toString() => '${jsElementPrefix}$_kind'
+ '(${enclosingClass != null ? '${enclosingClass.name}.' : ''}$name)';
}
abstract class JFunction extends JMember
@@ -431,7 +516,8 @@ class JTypeVariable implements TypeVariableEntity {
JTypeVariable(this.typeDeclaration, this.name, this.index);
- String toString() => 'type_variable(${typeDeclaration.name}.$name)';
+ String toString() =>
+ '${jsElementPrefix}type_variable(${typeDeclaration.name}.$name)';
}
class JsClosedWorld extends ClosedWorldBase {
« no previous file with comments | « pkg/compiler/lib/src/common_elements.dart ('k') | pkg/compiler/lib/src/js_model/js_strategy.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698