You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- [ ] `env` qualifier causes DotEnv variable retrieval (or, depending on the implementation, may resolve to a predefined variable).
14
14
- [ ] Use `fixed=true` access when doing property lookup in activation's `this` (e.g. user should use `this` if the enclosing class is dynamic and needs to access a dynamic property).
15
15
- [ ] Constants
16
16
- [ ] *EnumConstant* for both regular enumerations and flag enumerations
- [ ] Do not include XML reference values from Whack Engine
21
21
- [70%] Packages
22
22
- [70%] Namespaces
@@ -31,8 +31,8 @@
31
31
- [x] Lexical scopes
32
32
- [x] Default lexical scope
33
33
- [x] Conditional compilation
34
-
- [x] ShockDoc comments
35
-
- [x] Proxies
34
+
- [x] ESDoc comments
35
+
- [x] Meta-methods
36
36
- [x] Lexical conventions
37
37
- [ ] ShockScript: Expressions
38
38
- [x] `Embed()`
@@ -63,18 +63,17 @@
63
63
- [ ] Takes a non-attribute qualified identifier.
64
64
- [ ] Call operator
65
65
- [ ] Base is passed *followedByCall=true*
66
-
- [ ] Watch for static `shock_proxy::call` when calling classes (supports multiple signatures too)
67
-
- [ ] Take in consideration compatible overrides and overloads (also important for the `[object Object].equals()` method (e.g. in case two types are entirely different, should use the basemost `.equals()` method (essentially a dummy `===` comparison)))
68
-
- [ ] `XML` and `XMLList` being called statically shall still pass themselves as the context type to the first call argument, even if they define `shock_proxy::call()`.
66
+
- [ ] Watch for static `meta::call` when calling classes (supports multiple signatures too)
67
+
- [ ] `XML` and `XMLList` being called statically shall still pass themselves as the context type to the first call argument, even if they define `meta::call()`.
69
68
- [ ] Perform type inference for omitted generic parameters.
70
69
- [ ] `v as T` operator
71
70
- [ ] Passes context type `T` to `v`
72
71
- [ ] Assignment expression
73
-
- [ ] When base is *KeyValuePairReferenceValue*, `shock_proxy::set()`
74
-
- [ ] When base is *AttributeReferenceValue*, `shock_proxy::setAttribute()`
72
+
- [ ] When base is *KeyValuePairReferenceValue*, `meta::set()`
73
+
- [ ] When base is *AttributeReferenceValue*, `meta::setAttribute()`
75
74
- [ ] Delete operator
76
-
- [ ] `shock_proxy::delete()`
77
-
- [ ] `shock_proxy::deleteAttribute()`
75
+
- [ ] `meta::delete()`
76
+
- [ ] `meta::deleteAttribute()`
78
77
- [ ] New operator
79
78
- [ ] Base is passed *followedByCall=true*
80
79
- [ ] Support a dynamically typed base (`*` or `Class`)
@@ -94,12 +93,16 @@
94
93
- [x] ShockScript: Definitions
95
94
- [ ] Semantics
96
95
- [ ] Global objects
97
-
- [ ] shock_proxy namespace
98
-
- [ ] DotEnv namespace
99
-
- [ ] Reflect namespace
96
+
- [ ] (Whack engine) w namespace = "http://www.sweaxizone.com/whack/2015"
- [ ] assertEquals() (uses `[object Object].equals()` if each operand `is Object`)
105
+
- [ ] assertEqual() (uses `equal()`)
103
106
- [ ] assertThrows()
104
107
- [ ] encodeURI()
105
108
- [ ] decodeURI()
@@ -113,81 +116,81 @@
113
116
- [ ] NaN
114
117
- [ ] undefined
115
118
- [ ] Iterator.\<T> (interface)
116
-
- [ ] required `next():{ done: Boolean, value?: T }`
119
+
- [ ] required `next():[T]?` (the returned array must be of length 1)
117
120
- [ ] `length():int` (consumes the whole iterator)
118
121
- [ ] `skip(count:int):void`
119
-
- [ ] `shock_proxy::filter(...)` (returns another iterator)
122
+
- [ ] `meta::filter(...)` (returns another iterator)
120
123
- [ ] Other functional methods (iterator *helper methods* like `map`, `every`, `some`, `reduce`...)
121
124
- [ ] Iterable.\<K, V> (interface) requires keys() and values()
122
125
- [ ] Generator.\<T>
123
126
- [ ] Comparable interface
124
-
- [ ] `compareTo(obj:this):int`
125
-
- [ ] This is used by default on array sorting (as long as element types are equal)
127
+
- [ ] `compareTo(obj:Object):int`
128
+
- [ ] This is used by default on array sorting.
126
129
- [ ] Object
127
-
- [ ] Reflect::class()
128
-
- [ ] clone() returns `this`
129
-
- Default implementation clones most objects fine (records, tuples, arrays, maps and so on), but classes with a required constructor will require a custom clone() override.
130
-
- [ ] `equals(obj:this):Boolean`
131
-
- May be used in addition to reference equality (==, ===). Default object behavior is ===.
132
-
- Incompatible operands should use the most compatible base `.equals()` method (call operator specific behavior)
133
-
- Floating points should have an `equals()` implementation done like in React.js's memoization/state new value comparison.
134
-
- [ ] `Map.equals()` should look structurally using inner `.equals()`
135
-
- [ ] Array too
136
-
- [ ] Tuples too
137
-
- [ ] Records too
130
+
- [ ] `clone(deep:boolean=):Object`
131
+
- \[protected]
132
+
- Default implementation clones most objects fine (records, tuples, arrays, maps and so on), but fails for classes with a required constructor.
133
+
- Clones are shallow (not deep) by default
134
+
- [ ] `equals(obj:Object):boolean`
135
+
- [ ] NaN = NaN
136
+
- [ ] Maps
137
+
- [ ] Array
138
+
- [ ] Tuples
139
+
- [ ] Records
140
+
- [ ] Maps
141
+
- [ ] (Other objects just use ===)
142
+
- [ ] `reflect::class()`
138
143
- [ ] toString()
139
144
- [ ] toLocaleString()
140
145
- [ ] valueOf()
141
146
- [ ] Array
142
-
- [ ] `shock_proxy::get(...)` throws if out of bounds
143
-
- [ ] `shock_proxy::filter(...)`
144
-
- [ ] `clone()`
147
+
- [ ] `meta::get(...)` throws if out of bounds
148
+
- [ ] `meta::filter(...)`
149
+
- [ ] `clone(deep=)`
145
150
- [ ] `shift(): (void, T)`
146
151
- [ ] `pop(): (void, T)`
147
152
- [ ] `first : (void, T)`
148
153
- [ ] `last : (void, T)`
149
154
- [ ] Map
150
-
- [ ] `Map(weakKeys:Boolean = false)`
151
-
- [ ] `shock_proxy::get()` throws if key does not match
155
+
- [ ] `Map(weakKeys:boolean = false)`
156
+
- [ ] `meta::get()` throws if key does not match
152
157
- [ ] `length()`
153
158
- [ ] `clear()`
154
-
- [ ] `clone()`
155
-
- [ ] String
156
-
- [ ] static `fromByte(...):String`
157
-
- [ ] `format(vars:Map.<String, String>):String`
159
+
- [ ] `clone(deep=)`
160
+
- [ ] string
161
+
- [ ] static `fromByte(...):string`
162
+
- [ ] `format(vars:Map.<string, string>):string`
158
163
- Formats `$varName`, `${varName}` and `$$`
159
164
- [ ] Chars
160
-
- [ ] `new Chars(str:String, offset:int = 0)`
165
+
- [ ] `new Chars(str:string, offset:int = 0)`
161
166
- [ ] Indexing (peeking using zero-based Unicode code point positions; returns U+00 if out of bounds)
162
-
- [ ] `seq(numCodePoints:int):String` (stops on end of stream)
167
+
- [ ] `seq(numCodePoints:int):string` (stops on end of stream)
163
168
- [ ] `peek():uint` (equivalent to `chars[0]`)
164
-
- [ ] `reachedEnd:Boolean`
165
-
- [ ] `hasRemaining:Boolean`
166
-
- [ ] `clone():Chars`
169
+
- [ ] `reachedEnd:boolean`
170
+
- [ ] `hasRemaining:boolean`
171
+
- [ ] `clone(deep=):Chars`
167
172
- [ ] RegExpMatches
168
173
- [ ] Implement indexing
169
-
- [ ] `substr : [String]`
170
-
- [ ] `clone()`
174
+
- [ ] `substr : [string]`
175
+
- [ ] `clone(deep=)`
171
176
- [ ] XML
172
177
- [ ] Implement `Iterable`
173
-
- [ ] static `shock_proxy::call(arg:*):XML`
174
-
- [ ] `shock_proxy::has(name:QName):Boolean`
175
-
- [ ] `shock_proxy::get(index:int):XML` (throws if out of bounds)
0 commit comments