aboutsummaryrefslogtreecommitdiff
path: root/adapter_ecmascript_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'adapter_ecmascript_test.go')
-rw-r--r--adapter_ecmascript_test.go85
1 files changed, 44 insertions, 41 deletions
diff --git a/adapter_ecmascript_test.go b/adapter_ecmascript_test.go
index ee739ac..30bc165 100644
--- a/adapter_ecmascript_test.go
+++ b/adapter_ecmascript_test.go
@@ -411,52 +411,55 @@ func TestEcmaScriptAdapter(t *testing.T) {
func TestClassifyEcmaScriptStatement(t *testing.T) {
cases := []struct {
- input string
- expectedType string
- expectedScope bool
+ input string
+ expectedType string
+ expectedScope bool
+ expectedContinuation bool
}{
- {"function foo() {", "function", true},
- {"async function foo() {", "function", true},
- {"export function foo() {", "function", true},
- {"export default function() {", "function", true},
- {"class Foo {", "class", true},
- {"export class Foo {", "class", true},
- {"if (x) {", "if", true},
- {"else if (y) {", "if", true},
- {"else {", "if", true},
- {"for (const x of items) {", "for", true},
- {"while (true) {", "while", true},
- {"do {", "do", true},
- {"switch (x) {", "switch", true},
- {"try {", "try", true},
- {"interface Foo {", "interface", true},
- {"enum Direction {", "enum", true},
- {"namespace Foo {", "namespace", true},
- {"const x = 1;", "const", false},
- {"let x = 1;", "let", false},
- {"var x = 1;", "var", false},
- {"import { foo } from 'bar';", "import", false},
- {"type Foo = string;", "type", false},
- {"return x;", "return", false},
- {"return;", "return", false},
- {"throw new Error();", "throw", false},
- {"await fetch(url);", "await", false},
- {"yield value;", "yield", false},
- {"export const x = 1;", "const", false},
- {"export default class Foo {", "class", true},
- {"declare const x: number;", "const", false},
- {"declare function foo(): void;", "function", true},
- {"foo();", "", false},
- {"x = 1;", "", false},
- {"", "", false},
+ {"function foo() {", "function", true, false},
+ {"async function foo() {", "function", true, false},
+ {"export function foo() {", "function", true, false},
+ {"export default function() {", "function", true, false},
+ {"class Foo {", "class", true, false},
+ {"export class Foo {", "class", true, false},
+ {"if (x) {", "if", true, false},
+ {"else if (y) {", "if", true, true},
+ {"else {", "if", true, true},
+ {"for (const x of items) {", "for", true, false},
+ {"while (true) {", "while", true, false},
+ {"do {", "do", true, false},
+ {"switch (x) {", "switch", true, false},
+ {"try {", "try", true, false},
+ {"catch (e) {", "try", true, true},
+ {"finally {", "try", true, true},
+ {"interface Foo {", "interface", true, false},
+ {"enum Direction {", "enum", true, false},
+ {"namespace Foo {", "namespace", true, false},
+ {"const x = 1;", "const", false, false},
+ {"let x = 1;", "let", false, false},
+ {"var x = 1;", "var", false, false},
+ {"import { foo } from 'bar';", "import", false, false},
+ {"type Foo = string;", "type", false, false},
+ {"return x;", "return", false, false},
+ {"return;", "return", false, false},
+ {"throw new Error();", "throw", false, false},
+ {"await fetch(url);", "await", false, false},
+ {"yield value;", "yield", false, false},
+ {"export const x = 1;", "const", false, false},
+ {"export default class Foo {", "class", true, false},
+ {"declare const x: number;", "const", false, false},
+ {"declare function foo(): void;", "function", true, false},
+ {"foo();", "", false, false},
+ {"x = 1;", "", false, false},
+ {"", "", false, false},
}
for _, testCase := range cases {
- statementType, isScoped := classifyEcmaScriptStatement(testCase.input)
+ statementType, isScoped, isContinuation := classifyEcmaScriptStatement(testCase.input)
- if statementType != testCase.expectedType || isScoped != testCase.expectedScope {
- t.Errorf("classifyEcmaScriptStatement(%q) = (%q, %v), want (%q, %v)",
- testCase.input, statementType, isScoped, testCase.expectedType, testCase.expectedScope)
+ if statementType != testCase.expectedType || isScoped != testCase.expectedScope || isContinuation != testCase.expectedContinuation {
+ t.Errorf("classifyEcmaScriptStatement(%q) = (%q, %v, %v), want (%q, %v, %v)",
+ testCase.input, statementType, isScoped, isContinuation, testCase.expectedType, testCase.expectedScope, testCase.expectedContinuation)
}
}
}