• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/ucode/tests/custom/00_syntax/29_method_shorthand

  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