diff options
| author | Lars Knoll <lars.knoll@qt.io> | 2018-02-10 19:02:34 +0100 |
|---|---|---|
| committer | Lars Knoll <lars.knoll@qt.io> | 2018-04-25 17:49:15 +0000 |
| commit | 219485d898556368a833576f1c55e210c1cf7189 (patch) | |
| tree | c6f8faf247711f4ba36eb3605e5fc89f84c6aff6 /src/qml/jsruntime/qv4runtime.cpp | |
| parent | b59b727035c4c1a4d235432cc67e5d89d3a24cd3 (diff) | |
Add support for ES6 rest parameters
function foo(a, b, ...c) {...} now works correctly.
Change-Id: Ie442a0e7cc5e9dc4156e56b348bba305cced8531
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4runtime.cpp')
| -rw-r--r-- | src/qml/jsruntime/qv4runtime.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp index c984a70a14..b14395b507 100644 --- a/src/qml/jsruntime/qv4runtime.cpp +++ b/src/qml/jsruntime/qv4runtime.cpp @@ -1269,6 +1269,16 @@ QV4::ReturnedValue Runtime::method_createUnmappedArgumentsObject(ExecutionEngine return engine->memoryManager->allocObject<StrictArgumentsObject>(ic, engine->currentStackFrame)->asReturnedValue(); } +QV4::ReturnedValue Runtime::method_createRestParameter(ExecutionEngine *engine, int argIndex) +{ + const Value *values = engine->currentStackFrame->originalArguments + argIndex; + int nValues = engine->currentStackFrame->originalArgumentsCount - argIndex; + if (nValues <= 0) + return engine->newArrayObject(0)->asReturnedValue(); + return engine->newArrayObject(values, nValues)->asReturnedValue(); +} + + ReturnedValue Runtime::method_loadQmlContext(NoThrowEngine *engine) { Heap::QmlContext *ctx = engine->qmlContext(); |
