diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-03-14 16:24:04 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-04-26 20:26:51 +0000 |
commit | c68dc99c92480b7794d4866602fc8a6fb0439a7a (patch) | |
tree | 203cfb19cd25d57ac925aa65ccd2810e658cbf8e /tests/auto | |
parent | 2ca47e49a25b92e70f6fa6c7a15cb7102a52435c (diff) |
Add support for arrow functions
Arrow parameter lists are tricky and require some reparsing
by the standard to avoid conflicts in the parser with
expression statements.
Add an IsArrowFunction flag to the CompiledData::Function. This
information is required in the runtime, when creating Function
objects, as it does influence their behaviour in subtle ways.
Change-Id: I298801b091f98e30a9269d3c77d9ff94e519dabc
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/qml/ecmascripttests/TestExpectations | 49 | ||||
-rw-r--r-- | tests/auto/qml/qqmlparser/tst_qqmlparser.cpp | 7 |
2 files changed, 7 insertions, 49 deletions
diff --git a/tests/auto/qml/ecmascripttests/TestExpectations b/tests/auto/qml/ecmascripttests/TestExpectations index f9c54d099c..e862d36dc8 100644 --- a/tests/auto/qml/ecmascripttests/TestExpectations +++ b/tests/auto/qml/ecmascripttests/TestExpectations @@ -783,7 +783,6 @@ built-ins/Date/prototype/toDateString/format built-ins/Date/prototype/toDateString/invalid-date built-ins/Date/prototype/toISOString/15.9.5.43-0-8 built-ins/Date/prototype/toString/format -built-ins/Date/prototype/toString/non-date-receiver built-ins/Date/prototype/toTimeString/format built-ins/Date/prototype/toTimeString/invalid-date built-ins/Date/prototype/toUTCString/day-names @@ -4067,16 +4066,13 @@ language/eval-code/direct/lex-env-heritage language/eval-code/direct/lex-env-no-init-cls language/eval-code/direct/lex-env-no-init-const language/eval-code/direct/lex-env-no-init-let -language/eval-code/direct/new.target-arrow language/eval-code/direct/new.target-fn language/eval-code/direct/non-definable-function-with-function language/eval-code/direct/non-definable-function-with-variable language/eval-code/direct/non-definable-global-function language/eval-code/direct/non-definable-global-generator language/eval-code/direct/non-definable-global-var -language/eval-code/direct/super-call-arrow language/eval-code/direct/super-call-method -language/eval-code/direct/super-prop-arrow language/eval-code/direct/super-prop-method language/eval-code/direct/this-value-func-strict-source language/eval-code/direct/var-env-func-init-global-new @@ -4133,20 +4129,10 @@ language/expressions/array/spread-sngl-empty language/expressions/array/spread-sngl-expr language/expressions/array/spread-sngl-iter language/expressions/array/spread-sngl-literal -language/expressions/arrow-function/arrow/binding-tests-1 -language/expressions/arrow-function/arrow/binding-tests-2 -language/expressions/arrow-function/arrow/binding-tests-3 -language/expressions/arrow-function/arrow/capturing-closure-variables-1 -language/expressions/arrow-function/arrow/capturing-closure-variables-2 -language/expressions/arrow-function/arrow/concisebody-lookahead-assignmentexpression-1 -language/expressions/arrow-function/arrow/concisebody-lookahead-assignmentexpression-2 language/expressions/arrow-function/ArrowFunction_restricted-properties language/expressions/arrow-function/cannot-override-this-with-thisArg language/expressions/arrow-function/dflt-params-abrupt -language/expressions/arrow-function/dflt-params-arg-val-not-undefined -language/expressions/arrow-function/dflt-params-arg-val-undefined language/expressions/arrow-function/dflt-params-ref-later -language/expressions/arrow-function/dflt-params-ref-prior language/expressions/arrow-function/dflt-params-ref-self language/expressions/arrow-function/dflt-params-trailing-comma language/expressions/arrow-function/dstr-ary-init-iter-close @@ -4311,11 +4297,8 @@ language/expressions/arrow-function/dstr-obj-ptrn-prop-obj language/expressions/arrow-function/dstr-obj-ptrn-prop-obj-init language/expressions/arrow-function/dstr-obj-ptrn-prop-obj-value-null language/expressions/arrow-function/dstr-obj-ptrn-prop-obj-value-undef -language/expressions/arrow-function/empty-function-body-returns-undefined -language/expressions/arrow-function/expression-body-implicit-return language/expressions/arrow-function/length-dflt language/expressions/arrow-function/lexical-arguments -language/expressions/arrow-function/lexical-bindings-overriden-by-formal-parameters-non-strict language/expressions/arrow-function/lexical-new.target language/expressions/arrow-function/lexical-new.target-closure-returned language/expressions/arrow-function/lexical-supercall-from-immediately-invoked-arrow @@ -4323,10 +4306,6 @@ language/expressions/arrow-function/lexical-super-call-from-within-constructor language/expressions/arrow-function/lexical-super-property language/expressions/arrow-function/lexical-super-property-from-within-constructor language/expressions/arrow-function/lexical-this -language/expressions/arrow-function/low-precedence-expression-body-no-parens -language/expressions/arrow-function/non-strict -language/expressions/arrow-function/object-literal-return-requires-body-parens -language/expressions/arrow-function/param-dflt-yield-id-non-strict language/expressions/arrow-function/params-trailing-comma-multiple language/expressions/arrow-function/params-trailing-comma-single language/expressions/arrow-function/prototype-rules @@ -4335,31 +4314,8 @@ language/expressions/arrow-function/scope-param-elem-var-close language/expressions/arrow-function/scope-param-elem-var-open language/expressions/arrow-function/scope-param-rest-elem-var-close language/expressions/arrow-function/scope-param-rest-elem-var-open -language/expressions/arrow-function/scope-paramsbody-var-close language/expressions/arrow-function/scope-paramsbody-var-open -language/expressions/arrow-function/statement-body-requires-braces-must-return-explicitly -language/expressions/arrow-function/statement-body-requires-braces-must-return-explicitly-missing -language/expressions/arrow-function/strict -language/expressions/arrow-function/syntax/arrowparameters-bindingidentifier-arguments -language/expressions/arrow-function/syntax/arrowparameters-bindingidentifier-concisebody-assignmentexpression -language/expressions/arrow-function/syntax/arrowparameters-bindingidentifier-concisebody-functionbody -language/expressions/arrow-function/syntax/arrowparameters-bindingidentifier-eval -language/expressions/arrow-function/syntax/arrowparameters-bindingidentifier-lineterminator-concisebody-assignmentexpression -language/expressions/arrow-function/syntax/arrowparameters-bindingidentifier-lineterminator-concisebody-functionbody -language/expressions/arrow-function/syntax/arrowparameters-bindingidentifier-yield -language/expressions/arrow-function/syntax/arrowparameters-cover-concisebody-assignmentexpression -language/expressions/arrow-function/syntax/arrowparameters-cover-concisebody-functionbody -language/expressions/arrow-function/syntax/arrowparameters-cover-formalparameters-arguments -language/expressions/arrow-function/syntax/arrowparameters-cover-formalparameters-eval -language/expressions/arrow-function/syntax/arrowparameters-cover-formalparameters-yield -language/expressions/arrow-function/syntax/arrowparameters-cover-includes-rest-concisebody-functionbody -language/expressions/arrow-function/syntax/arrowparameters-cover-initialize-1 language/expressions/arrow-function/syntax/arrowparameters-cover-initialize-2 -language/expressions/arrow-function/syntax/arrowparameters-cover-lineterminator-concisebody-assignmentexpression -language/expressions/arrow-function/syntax/arrowparameters-cover-lineterminator-concisebody-functionbody -language/expressions/arrow-function/syntax/arrowparameters-cover-rest-concisebody-functionbody -language/expressions/arrow-function/syntax/arrowparameters-cover-rest-lineterminator-concisebody-functionbody -language/expressions/arrow-function/syntax/variations language/expressions/arrow-function/throw-new language/expressions/assignment/destructuring/iterator-destructuring-property-reference-target-evaluation-order language/expressions/assignment/destructuring/keyed-destructuring-property-reference-target-evaluation-order @@ -4597,7 +4553,6 @@ language/expressions/assignment/S11.13.1_A7_T1 language/expressions/assignment/S11.13.1_A7_T2 language/expressions/assignment/S11.13.1_A7_T3 language/expressions/async-arrow-function/arrow-returns-promise -language/expressions/async-arrow-function/async-lineterminator-identifier-throws language/expressions/async-arrow-function/dflt-params-abrupt language/expressions/async-arrow-function/dflt-params-arg-val-not-undefined language/expressions/async-arrow-function/dflt-params-arg-val-undefined @@ -6548,8 +6503,6 @@ language/expressions/tagged-template/cache-realm language/expressions/tagged-template/cache-same-site language/expressions/tagged-template/cache-same-site-top-level language/expressions/tagged-template/call-expression-argument-list-evaluation -language/expressions/tagged-template/call-expression-context-no-strict -language/expressions/tagged-template/call-expression-context-strict language/expressions/tagged-template/invalid-escape-sequences language/expressions/tagged-template/member-expression-argument-list-evaluation language/expressions/tagged-template/tco-call @@ -6857,7 +6810,6 @@ language/module-code/namespace/Symbol.iterator language/module-code/namespace/Symbol.toStringTag language/module-code/parse-export-empty language/rest-parameters/array-pattern -language/rest-parameters/arrow-function language/rest-parameters/expected-argument-count language/rest-parameters/object-pattern language/rest-parameters/with-new-target @@ -9463,7 +9415,6 @@ built-ins/NativeErrors/ReferenceError/is-error-object built-ins/NativeErrors/SyntaxError/is-error-object built-ins/NativeErrors/TypeError/is-error-object built-ins/NativeErrors/URIError/is-error-object -language/expressions/object/11.1.5_7-3-2 # Expected to fail but passed --- language/eval-code/direct/var-env-global-lex-non-strict diff --git a/tests/auto/qml/qqmlparser/tst_qqmlparser.cpp b/tests/auto/qml/qqmlparser/tst_qqmlparser.cpp index a36409a35e..ce9d0ac894 100644 --- a/tests/auto/qml/qqmlparser/tst_qqmlparser.cpp +++ b/tests/auto/qml/qqmlparser/tst_qqmlparser.cpp @@ -81,6 +81,13 @@ public: const quint32 parentBegin = parent->firstSourceLocation().begin(); const quint32 parentEnd = parent->lastSourceLocation().end(); + if (node->firstSourceLocation().begin() < parentBegin) + qDebug() << "first source loc failed: node:" << node->kind << "at" << node->firstSourceLocation().startLine << "/" << node->firstSourceLocation().startColumn + << "parent" << parent->kind << "at" << parent->firstSourceLocation().startLine << "/" << parent->firstSourceLocation().startColumn; + if (node->lastSourceLocation().end() > parentEnd) + qDebug() << "first source loc failed: node:" << node->kind << "at" << node->lastSourceLocation().startLine << "/" << node->lastSourceLocation().startColumn + << "parent" << parent->kind << "at" << parent->lastSourceLocation().startLine << "/" << parent->lastSourceLocation().startColumn; + QVERIFY(node->firstSourceLocation().begin() >= parentBegin); QVERIFY(node->lastSourceLocation().end() <= parentEnd); } |