mirror of
https://github.com/dart-lang/sdk
synced 2024-09-15 23:59:47 +00:00
Use type parameter in extension member lowering
Pass through expected return type as the generic type parameter for the js_util functions in the transformation for external extension member lowering. Change-Id: I7044c532a8b449003faa166edd8c09fe7fd794a9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/214461 Reviewed-by: Srujan Gaddam <srujzs@google.com> Reviewed-by: Sigmund Cherem <sigmund@google.com> Commit-Queue: Riley Porter <rileyporter@google.com>
This commit is contained in:
parent
b2d8916539
commit
97e45b35be
|
@ -139,11 +139,10 @@ class JsUtilOptimizer extends Transformer {
|
|||
VariableGet(function.positionalParameters.first),
|
||||
StringLiteral(_getExtensionMemberName(node))
|
||||
], types: [
|
||||
DynamicType()
|
||||
function.returnType
|
||||
]))
|
||||
..fileOffset = node.fileOffset;
|
||||
return ReturnStatement(
|
||||
AsExpression(getPropertyInvocation, function.returnType));
|
||||
return ReturnStatement(getPropertyInvocation);
|
||||
}
|
||||
|
||||
/// Returns a new function body for the given [node] external setter.
|
||||
|
@ -153,18 +152,18 @@ class JsUtilOptimizer extends Transformer {
|
|||
ReturnStatement _getExternalSetterBody(Procedure node) {
|
||||
var function = node.function;
|
||||
assert(function.positionalParameters.length == 2);
|
||||
var value = function.positionalParameters.last;
|
||||
var setPropertyInvocation = StaticInvocation(
|
||||
_setPropertyTarget,
|
||||
Arguments([
|
||||
VariableGet(function.positionalParameters.first),
|
||||
StringLiteral(_getExtensionMemberName(node)),
|
||||
VariableGet(function.positionalParameters.last)
|
||||
VariableGet(value)
|
||||
], types: [
|
||||
DynamicType()
|
||||
value.type
|
||||
]))
|
||||
..fileOffset = node.fileOffset;
|
||||
return ReturnStatement(AsExpression(
|
||||
_lowerSetProperty(setPropertyInvocation), function.returnType));
|
||||
return ReturnStatement(_lowerSetProperty(setPropertyInvocation));
|
||||
}
|
||||
|
||||
/// Returns a new function body for the given [node] external method.
|
||||
|
@ -183,11 +182,10 @@ class JsUtilOptimizer extends Transformer {
|
|||
.map((argument) => VariableGet(argument))
|
||||
.toList())
|
||||
], types: [
|
||||
DynamicType()
|
||||
function.returnType
|
||||
]))
|
||||
..fileOffset = node.fileOffset;
|
||||
return ReturnStatement(AsExpression(
|
||||
_lowerCallMethod(callMethodInvocation), function.returnType));
|
||||
return ReturnStatement(_lowerCallMethod(callMethodInvocation));
|
||||
}
|
||||
|
||||
/// Returns the extension member name.
|
||||
|
|
Loading…
Reference in a new issue