diff --git a/pkg/dart2wasm/lib/js/inline_expander.dart b/pkg/dart2wasm/lib/js/inline_expander.dart index 089d8d7805b..5888582337b 100644 --- a/pkg/dart2wasm/lib/js/inline_expander.dart +++ b/pkg/dart2wasm/lib/js/inline_expander.dart @@ -94,9 +94,20 @@ class InlineExpander { } } - assert(arguments.positional[0] is StringLiteral, - "Code template must be a StringLiteral"); - String codeTemplate = (arguments.positional[0] as StringLiteral).value; + Expression templateArgument = arguments.positional.first; + String codeTemplate; + if (templateArgument is StringLiteral) { + codeTemplate = templateArgument.value; + } else { + assert(templateArgument is ConstantExpression, + "Code template must be a StringLiteral or a ConstantExpression"); + templateArgument as ConstantExpression; + Constant constant = templateArgument.constant; + assert(constant is StringConstant, + "Constant code template must be a StringConstant"); + constant as StringConstant; + codeTemplate = constant.value; + } String jsMethodName = _methodCollector.generateMethodName(); _inlineJSImportName = 'dart2wasm.$jsMethodName'; _replaceProcedureWithInlineJS =