Index: sdk/lib/_internal/js_runtime/lib/js_rti.dart |
diff --git a/sdk/lib/_internal/js_runtime/lib/js_rti.dart b/sdk/lib/_internal/js_runtime/lib/js_rti.dart |
index de7db233558002a16e2375aa284c7530a769bb20..8f27e957b360d0e6be4878834a6540eca1eb69d6 100644 |
--- a/sdk/lib/_internal/js_runtime/lib/js_rti.dart |
+++ b/sdk/lib/_internal/js_runtime/lib/js_rti.dart |
@@ -96,7 +96,8 @@ getMangledTypeName(TypeImpl type) => type._typeName; |
@NoInline() |
Object setRuntimeTypeInfo(Object target, var rti) { |
assert(rti == null || isJsArray(rti)); |
- JS('var', r'#.$ti = #', target, rti); |
+ String rtiName = JS_GET_NAME(JsGetName.RTI_NAME); |
+ JS('var', r'#[#] = #', target, rtiName, rti); |
return target; |
} |
@@ -106,7 +107,8 @@ Object setRuntimeTypeInfo(Object target, var rti) { |
*/ |
getRuntimeTypeInfo(Object target) { |
if (target == null) return null; |
- return JS('var', r'#.$ti', target); |
+ String rtiName = JS_GET_NAME(JsGetName.RTI_NAME); |
+ return JS('var', r'#[#]', target, rtiName); |
} |
/** |
@@ -171,7 +173,8 @@ String runtimeTypeToString(var rti, {String onTypeVariable(int i)}) { |
if (rti is int) { |
return '${onTypeVariable == null ? rti : onTypeVariable(rti)}'; |
} |
- if (JS('bool', 'typeof #.func != "undefined"', rti)) { |
+ String functionPropertyName = JS_GET_NAME(JsGetName.FUNCTION_TYPE_TAG); |
+ if (JS('bool', 'typeof #[#] != "undefined"', rti, functionPropertyName)) { |
// If the RTI has typedef equivalence info (via mirrors), use that since the |
// mirrors helpers will re-parse the generated string. |
@@ -188,10 +191,12 @@ String runtimeTypeToString(var rti, {String onTypeVariable(int i)}) { |
String _functionRtiToString(var rti, String onTypeVariable(int i)) { |
String returnTypeText; |
- if (JS('bool', '!!#.v', rti)) { |
+ String voidTag = JS_GET_NAME(JsGetName.FUNCTION_TYPE_VOID_RETURN_TAG); |
+ if (JS('bool', '!!#[#]', rti, voidTag)) { |
returnTypeText = 'void'; |
} else { |
- var returnRti = JS('', '#.ret', rti); |
+ String returnTypeTag = JS_GET_NAME(JsGetName.FUNCTION_TYPE_RETURN_TYPE_TAG); |
+ var returnRti = JS('', '#[#]', rti, returnTypeTag); |
returnTypeText = |
runtimeTypeToString(returnRti, onTypeVariable: onTypeVariable); |
} |
@@ -199,9 +204,11 @@ String _functionRtiToString(var rti, String onTypeVariable(int i)) { |
String argumentsText = ''; |
String sep = ''; |
- bool hasArguments = JS('bool', '"args" in #', rti); |
+ String requiredParamsTag = |
+ JS_GET_NAME(JsGetName.FUNCTION_TYPE_REQUIRED_PARAMETERS_TAG); |
+ bool hasArguments = JS('bool', '# in #', requiredParamsTag, rti); |
if (hasArguments) { |
- List arguments = JS('JSFixedArray', '#.args', rti); |
+ List arguments = JS('JSFixedArray', '#[#]', rti, requiredParamsTag); |
for (var argument in arguments) { |
argumentsText += sep; |
argumentsText += |
@@ -210,9 +217,11 @@ String _functionRtiToString(var rti, String onTypeVariable(int i)) { |
} |
} |
- bool hasOptionalArguments = JS('bool', '"opt" in #', rti); |
+ String optionalParamsTag = |
+ JS_GET_NAME(JsGetName.FUNCTION_TYPE_OPTIONAL_PARAMETERS_TAG); |
+ bool hasOptionalArguments = JS('bool', '# in #', optionalParamsTag, rti); |
if (hasOptionalArguments) { |
- List optionalArguments = JS('JSFixedArray', '#.opt', rti); |
+ List optionalArguments = JS('JSFixedArray', '#[#]', rti, optionalParamsTag); |
argumentsText += '$sep['; |
sep = ''; |
for (var argument in optionalArguments) { |
@@ -224,9 +233,11 @@ String _functionRtiToString(var rti, String onTypeVariable(int i)) { |
argumentsText += ']'; |
} |
- bool hasNamedArguments = JS('bool', '"named" in #', rti); |
+ String namedParamsTag = |
+ JS_GET_NAME(JsGetName.FUNCTION_TYPE_NAMED_PARAMETERS_TAG); |
+ bool hasNamedArguments = JS('bool', '# in #', namedParamsTag, rti); |
if (hasNamedArguments) { |
- var namedArguments = JS('', '#.named', rti); |
+ var namedArguments = JS('', '#[#]', rti, namedParamsTag); |
argumentsText += '$sep{'; |
sep = ''; |
for (String name in extractKeys(namedArguments)) { |
@@ -285,7 +296,8 @@ String getRuntimeTypeString(var object) { |
if (functionRti != null) return runtimeTypeToString(functionRti); |
String className = getClassName(object); |
if (object == null) return className; |
- var rti = JS('var', r'#.$ti', object); |
+ String rtiName = JS_GET_NAME(JsGetName.RTI_NAME); |
+ var rti = JS('var', r'#[#]', object, rtiName); |
return "$className${joinArguments(rti, 0)}"; |
} |