Skip to content

[record_use] Completeness: dart2js: named arguments #2883

@dcharkes

Description

@dcharkes

$ diff pkg/vm/testcases/transformations/record_use/named_both.dart.json.expect pkg/compiler/test/record_use/golden/named_both.json.expect

One of the diffs:

71,76c80,85
<           "loading_unit": "1",
<           "named": {
<             "i": 2,
<             "l": 4,
<             "k": 5
<           },
---
>           "loading_unit": "out",
>           "positional": [
>             2,
>             5,
>             4
>           ],

dart2js converts the arguments to positional before the usages are recorded. We'll need to keep track of the names of named arguments (and that they were named) to be able to make dart2js emit the same info.

(Separated out from #2717)

The CallStructure doesn't contain the argument names at the point of recording: https://github.com/dart-lang/sdk/blob/c854455f62bde1aa6588e3dbbffbe8ae99cc5853/pkg/compiler/lib/src/ssa/codegen.dart#L2376-L2379

The arguments get removed during SSA construction, we could possibly retain them if we add List<String>? namedArguments to HInvokeStatic, which would we also would serialize/deserialize.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Todo

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions