v8/test/cctest
littledan 0e7f095c6d Restrict FunctionDeclarations in Statement position
ES2015 generally bans FunctionDeclarations in positions which expect a Statement,
as opposed to a StatementListItem, such as a FunctionDeclaration which constitutes
the body of a for loop. However, Annex B 3.2 and 3.4 make exceptions for labeled
function declarations and function declarations as the body of an if statement in
sloppy mode, in the latter case specifying that the semantics are as if the
function declaration occurred in a block. Chrome has historically permitted
further extensions, for the body of any flow control construct.

This patch addresses both the syntactic and semantic mismatches between V8 and
the spec. For the semantic mismatch, function declarations as the body of if
statements change from unconditionally hoisting in certain cases to acquiring
the sloppy mode function in block semantics (based on Annex B 3.3). For the
extra syntax permitted, this patch adds a flag,
--harmony-restrictive-declarations, which excludes disallowed function declaration
cases. A new UseCounter, LegacyFunctionDeclaration, is added to count how often
function declarations occur as the body of other constructs in sloppy mode. With
this patch, the code generally follows the form of the specification with respect
to parsing FunctionDeclarations, rather than allowing them in arbitrary Statement
positions, and makes it more clear where our extensions occur.

BUG=v8:4647
R=adamk
LOG=Y

Review URL: https://codereview.chromium.org/1757543003

Cr-Commit-Position: refs/heads/master@{#34470}
2016-03-03 21:34:26 +00:00
..
compiler [compiler] Introduce StringEqualStub and StringNotEqualStub. 2016-03-03 10:18:49 +00:00
heap [test] Remove dependent commands. 2016-03-02 13:14:13 +00:00
interpreter Remove the global Strength enum class completely. 2016-03-01 16:06:04 +00:00
wasm [wasm] add rotate opcodes 2016-03-03 05:11:10 +00:00
cctest_exe.isolate [Swarming] Isolate perf tests. 2016-02-15 11:17:18 +00:00
cctest.cc [test] Remove dependent commands. 2016-03-02 13:14:13 +00:00
cctest.gyp [arm64] Prevent the compiler to use fmadd/fmsub while compiling cctest. 2016-02-29 09:16:14 +00:00
cctest.h [test] Remove dependent commands. 2016-03-02 13:14:13 +00:00
cctest.isolate [Interpreter] Refactor bytecode generator test suite. 2016-02-25 12:07:19 +00:00
cctest.status Add cctest/test-run-wasm-64/Run_WasmInt64* to skip list for big-endian 2016-03-02 21:49:20 +00:00
DEPS
expression-type-collector-macros.h Make typing-asm match spec more closely around load/store, add more tests. 2015-11-30 21:11:47 +00:00
expression-type-collector.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
expression-type-collector.h Create ast/ and parsing/ subdirectories and move appropriate files 2015-11-26 16:23:07 +00:00
gay-fixed.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
gay-fixed.h [presubmit] Enable readability/namespace linter checking. 2015-09-30 13:47:11 +00:00
gay-precision.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
gay-precision.h [presubmit] Enable readability/namespace linter checking. 2015-09-30 13:47:11 +00:00
gay-shortest.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
gay-shortest.h [presubmit] Enable readability/namespace linter checking. 2015-09-30 13:47:11 +00:00
log-eq-of-logging-and-traversal.js
OWNERS Fix filename typo in OWNERS. 2016-01-11 20:20:18 +00:00
print-extension.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
print-extension.h Remove deprecated functions the smaller half of the remaing tests 2015-11-17 12:42:44 +00:00
profiler-extension.cc Unflake CPU profiler tests. 2016-02-08 18:12:20 +00:00
profiler-extension.h Unflake CPU profiler tests. 2016-02-08 18:12:20 +00:00
test-accessors.cc Add the data parameter back to the access check callback 2016-02-03 10:02:35 +00:00
test-api-accessors.cc Generalize 'fast accessor' tests to work with --always-opt. 2016-01-14 14:25:02 +00:00
test-api-fast-accessor-builder.cc [crankshaft] Replace stub cache harvesting with a bit of type propagation 2016-02-15 15:22:00 +00:00
test-api-interceptors.cc Add the data parameter back to the access check callback 2016-02-03 10:02:35 +00:00
test-api.cc Move hasOwnProperty to builtins.cc 2016-02-29 10:55:35 +00:00
test-api.h Move heap and CPU profilers into a dedicated directory. 2015-09-28 19:34:18 +00:00
test-array-list.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-asm-validator.cc Allow negation of doubles in asm typer. 2016-03-02 23:45:15 +00:00
test-assembler-arm64.cc [arm64] Make sure that memory allocated for assembler tests is executable. 2016-02-29 10:52:34 +00:00
test-assembler-arm.cc Added a ReverseBits operator and used it to implement Ctz. 2016-02-16 11:14:28 +00:00
test-assembler-ia32.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-assembler-mips64.cc MIPS64: Fix 'Fix 'MIPS: use DAHI/DATH for li macro on mips64r6.'' 2016-03-03 18:55:02 +00:00
test-assembler-mips.cc Reland of MIPS: Add FPXX support to MIPS32R2 2016-02-08 09:44:19 +00:00
test-assembler-ppc.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-assembler-x64.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-assembler-x87.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-ast-expression-visitor.cc Fix bug where generators got closed prematurely. 2016-01-27 08:13:24 +00:00
test-ast.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-atomicops.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-bignum-dtoa.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-bignum.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-bit-vector.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-circular-queue.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-code-stubs-arm64.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-code-stubs-arm.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-code-stubs-ia32.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-code-stubs-mips64.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-code-stubs-mips.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-code-stubs-x64.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-code-stubs-x87.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-code-stubs.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-code-stubs.h
test-compiler.cc Revert of Type Feedback Vector lives in the closure (patchset #2 id:40001 of https://codereview.chromium.org/1668103002/ ) 2016-02-05 10:48:35 +00:00
test-constantpool.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-conversions.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-cpu-profiler.cc [Interpreter] Log source positions for bytecode arrays. 2016-03-02 02:10:53 +00:00
test-date.cc [builtins] Refactor the remaining Date builtins. 2016-01-12 10:48:26 +00:00
test-debug.cc [debugger] fix break locations for assignments and return. 2016-03-01 12:47:55 +00:00
test-decls.cc Ship ES2015 sloppy-mode const semantics 2016-01-11 23:09:59 +00:00
test-deoptimization.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-dictionary.cc Make JSProxies always be in slow mode 2016-01-15 13:03:10 +00:00
test-disasm-arm64.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-disasm-arm.cc [Atomics] Add dmb/dsb/isb instructions to ARM 2016-02-17 19:58:04 +00:00
test-disasm-ia32.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-disasm-mips64.cc MIPS64: r6 compact branch optimization. 2016-01-06 13:36:41 +00:00
test-disasm-mips.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-disasm-ppc.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-disasm-x64.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-disasm-x87.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-diy-fp.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-double.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-dtoa.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-elements-kind.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-experimental-extra.js Add experimental, non-snapshotted V8 extras 2015-08-20 00:01:14 +00:00
test-extra.js [bootstrapper] extra natives must not use natives syntax. 2016-02-05 12:33:55 +00:00
test-fast-dtoa.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-feedback-vector.cc Revert of Type Feedback Vector lives in the closure (patchset #2 id:40001 of https://codereview.chromium.org/1668103002/ ) 2016-02-05 10:48:35 +00:00
test-feedback-vector.h The metadata part of TypeFeedbackVector is extracted to TypeFeedbackMetadata array. 2015-10-07 10:33:32 +00:00
test-field-type-tracking.cc Don't include field-type.h/field-index.h into property.h 2016-02-16 13:28:47 +00:00
test-fixed-dtoa.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-flags.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-func-name-inference.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-fuzz-arm64.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-gc-tracer.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-global-handles.cc Don't NULL-check GlobalHandle::Node::object_ 2016-01-25 13:10:09 +00:00
test-global-object.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-hashing.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-hashmap.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-heap-profiler.cc [serializer] split up src/snapshot/serialize.* 2016-03-01 14:44:08 +00:00
test-hydrogen-types.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-identity-map.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-inobject-slack-tracking.cc Introduce {FAST,SLOW}_STRING_WRAPPER_ELEMENTS 2016-01-29 18:58:04 +00:00
test-javascript-arm64.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-js-arm64-variables.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-list.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-liveedit.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-lockers.cc Add Isolate::DiscardThreadSpecificMetadata method to embedder API. 2015-12-16 15:49:49 +00:00
test-log-stack-tracer.cc [Interpreter] Add support for cpu profiler logging. 2016-02-26 11:04:55 +00:00
test-log.cc [Interpreter] Add support for cpu profiler logging. 2016-02-26 11:04:55 +00:00
test-macro-assembler-arm.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-macro-assembler-ia32.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-macro-assembler-mips64.cc MIPS: Use PC relative instructions on r6. 2016-02-03 13:31:30 +00:00
test-macro-assembler-mips.cc MIPS: Use PC relative instructions on r6. 2016-02-03 13:31:30 +00:00
test-macro-assembler-x64.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-macro-assembler-x87.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-mementos.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-microtask-delivery.cc Pass --harmony-object-observe in tests that depend on it 2015-12-09 20:34:16 +00:00
test-object-observe.cc Add the data parameter back to the access check callback 2016-02-03 10:02:35 +00:00
test-parsing.cc Restrict FunctionDeclarations in Statement position 2016-03-03 21:34:26 +00:00
test-platform-linux.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-platform-win32.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-platform.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-profile-generator.cc Make CPU profiler unwind the inlined functions stack. 2016-03-01 06:00:08 +00:00
test-random-number-generator.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-receiver-check-hidden-prototype.cc Fix the receiver check in the HandleFastApiCall builtin. 2016-01-14 12:24:04 +00:00
test-regexp.cc [regexp] implement case-insensitive unicode regexps. 2016-01-27 08:25:38 +00:00
test-reloc-info.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-representation.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-sampler-api.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-serialize.cc [test] Remove dependent commands. 2016-03-02 13:14:13 +00:00
test-simd.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-slots-buffer.cc [cctest] Move most heap related tests to test/cctest/heap and clean wrt IWYU 2015-12-09 11:26:15 +00:00
test-strings.cc Revert of [regexp] implement /ui to mirror the implementation for /i. (patchset #2 id:20001 of https://codereview.chromium.org/1641613002/ ) 2016-02-02 11:44:45 +00:00
test-strtod.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-symbols.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-thread-termination.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-threads.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-trace-event.cc [Tracing] Remove deprecated AddTraceEvent 2016-03-01 21:20:48 +00:00
test-transitions.cc Don't include field-type.h/field-index.h into property.h 2016-02-16 13:28:47 +00:00
test-typedarrays.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-types.cc [compiler] Drop the CompareNilIC. 2016-02-27 19:13:46 +00:00
test-typing-reset.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-unbound-queue.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-unboxed-doubles.cc Remove the global Strength enum class completely. 2016-03-01 16:06:04 +00:00
test-unique.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-unscopables-hidden-prototype.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-utils-arm64.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-utils-arm64.h [test] Test expectations in cctest should use CHECK and not DCHECK. 2015-12-07 05:37:15 +00:00
test-utils.cc [serializer] split up src/snapshot/serialize.* 2016-03-01 14:44:08 +00:00
test-version.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-weakmaps.cc [heap] Move to page lookups for SemiSpace, NewSpace, and Heap containment methods 2016-02-10 09:47:16 +00:00
test-weaksets.cc [heap] Move to page lookups for SemiSpace, NewSpace, and Heap containment methods 2016-02-10 09:47:16 +00:00
testcfg.py [test] Remove dependent commands. 2016-03-02 13:14:13 +00:00
trace-extension.cc Add CollectSample API function to CpuProfiler 2016-01-26 20:48:28 +00:00
trace-extension.h [presubmit] Enable readability/namespace linter checking. 2015-09-30 13:47:11 +00:00
types-fuzz.h Remove the template magic from types.(h|cc), remove types-inl.h. 2016-02-02 07:26:06 +00:00