1 Shorthand method declarations in object literals. 2 3 -- Expect stdout -- 4 42 5 3 6 15 7 Hello, test 8 nested 9 2 10 bar 11 -- End -- 12 13 -- Testcase -- 14 {% 15 // Basic method shorthand 16 obj1 = { 17 foo() { return 42; } 18 }; 19 print(obj1.foo(), "\n"); 20 21 // Method with parameters 22 obj2 = { 23 add(a, b) { return a + b; } 24 }; 25 print(obj2.add(1, 2), "\n"); 26 27 // Method with rest parameters 28 obj3 = { 29 sum(...args) { 30 let total = 0; 31 for (let x in args) total += x; 32 return total; 33 } 34 }; 35 print(obj3.sum(1, 2, 3, 4, 5), "\n"); 36 37 // Mixed object with methods and properties 38 obj4 = { 39 name: "test", 40 greet() { return "Hello, " + this.name; }, 41 value: 123 42 }; 43 print(obj4.greet(), "\n"); 44 45 // Nested methods 46 obj5 = { 47 outer() { 48 return { 49 inner() { return "nested"; } 50 }; 51 } 52 }; 53 print(obj5.outer().inner(), "\n"); 54 55 // Method alongside spread operator 56 base = { x: 1 }; 57 obj6 = { 58 ...base, 59 y: 2, 60 get_y() { return this.y; } 61 }; 62 print(obj6.get_y(), "\n"); 63 64 // Computed method name 65 key = "foo"; 66 obj7 = { 67 [key]() { return "bar"; }, 68 baz: 123 69 }; 70 print(obj7.foo(), "\n"); 71 %} 72 -- End -- 73 74 -- Expect stderr -- 75 Syntax error: Unexpected token 76 Expecting '{' 77 In line 2, byte 16: 78 79 ` obj = { foo() };` 80 Near here --------^ 81 82 83 -- End -- 84 85 -- Testcase -- 86 {% 87 obj = { foo() }; 88 %} 89 -- End -- 90 91 -- Expect stderr -- 92 Syntax error: Unexpected token 93 Expecting Label 94 In line 2, byte 14: 95 96 ` obj = { foo(123) { return 1; } };` 97 Near here ------^ 98 99 100 -- End -- 101 102 -- Testcase -- 103 {% 104 obj = { foo(123) { return 1; } }; 105 %} 106 -- End -- 107 108 -- Expect stderr -- 109 Syntax error: Invalid identifier 110 In line 2, byte 16: 111 112 ` obj = { return() { } };` 113 Near here --------^ 114 115 116 -- End -- 117 118 -- Testcase -- 119 {% 120 obj = { return() { } }; 121 %} 122 -- End --
This page was automatically generated by LXR 0.3.1. • OpenWrt