@neocompose/cli 0.84.1 → 0.84.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/dist/neo-runtime.mjs +684 -217
- package/dist/test-worker.mjs +314 -78
- package/package.json +1 -1
- package/skills/neocompose-cli/SKILL.md +1 -1
- package/skills/neocompose-cli/references/cli-development.md +1 -1
- package/skills/neocompose-cli/references/neoscript.md +21 -0
- package/skills/neocompose-cli/references/values-identities-and-references.md +11 -0
|
@@ -129,7 +129,7 @@ wrappers.
|
|
|
129
129
|
The marker near the top of `SKILL.md` must exactly match the package version:
|
|
130
130
|
|
|
131
131
|
```html
|
|
132
|
-
<!-- reviewed-through-cli: 0.84.
|
|
132
|
+
<!-- reviewed-through-cli: 0.84.3 -->
|
|
133
133
|
```
|
|
134
134
|
|
|
135
135
|
The quoted version above is checked too, so this instruction cannot go stale
|
|
@@ -24,6 +24,15 @@ Keep computed getters, setters, functions, dialogue logic, group logic, and
|
|
|
24
24
|
constructors inline in their owning `.neo` or `.neoflow` declaration. Do not
|
|
25
25
|
create `Scripts/<Class>/<Member>.neo` sidecars.
|
|
26
26
|
|
|
27
|
+
Explicit constructions such as `new MissingClass(5)` require a declared type,
|
|
28
|
+
including inside stored object initializers, constructor arguments, and collections.
|
|
29
|
+
The editor reports an unresolved class at its type name and refreshes the diagnostic
|
|
30
|
+
when the declaration changes. Contextual `new(...)` still uses the expected type.
|
|
31
|
+
|
|
32
|
+
If resolving a stored reference encounters an invalid initializer elsewhere,
|
|
33
|
+
the diagnostic points to that initializer's authored file and position. Fix the
|
|
34
|
+
reported initializer; a valid downstream `Reference(...)` is not the error site.
|
|
35
|
+
|
|
27
36
|
Declare a setter's value type explicitly with the canonical form
|
|
28
37
|
`set(int value) { ... }`. Project analysis, candidate materialization, and
|
|
29
38
|
focused script commands all use the same accessor extraction. A property can have at most one getter and one setter. Concrete setters need a body (an empty body is a valid no-op); typed setters must use the property type and the parameter name `value`. Abstract and interface properties declare bodyless accessor contracts.
|
|
@@ -103,6 +112,18 @@ A generic receiver may call methods from its class or interface constraint,
|
|
|
103
112
|
including void calls used as statements. Generic arguments substitute through
|
|
104
113
|
the constraint; nullable receivers still require narrowing or null handling.
|
|
105
114
|
|
|
115
|
+
Runtime `is` tests on generic values check whether the bound can overlap the
|
|
116
|
+
tested type. A class bound need not implement an interface itself when a
|
|
117
|
+
subclass can implement it. A successful pattern binding exposes that interface's
|
|
118
|
+
members, including after `if (item.Data is not IReceiver receiver) continue;`.
|
|
119
|
+
Sealed classes without the interface and unrelated class bounds remain disjoint.
|
|
120
|
+
|
|
121
|
+
An interface guard also narrows the original receiver without a pattern binding.
|
|
122
|
+
After `if (item is not IReceiver) continue;`, `item` exposes both its declared
|
|
123
|
+
class members and `IReceiver` members. The same applies to guards that return,
|
|
124
|
+
throw, or break. Reassignment clears the proof, and paths that did not pass the
|
|
125
|
+
guard cannot use it.
|
|
126
|
+
|
|
106
127
|
Functions, natives and interface functions can declare their own type
|
|
107
128
|
parameters after the name, each with an optional constraint and default:
|
|
108
129
|
|
|
@@ -254,6 +254,17 @@ and declarations created in the same push. Preparation materializes the target
|
|
|
254
254
|
collection and its required ancestor rows together, preserving the virtual
|
|
255
255
|
identities. No preliminary push or manual value ID is needed.
|
|
256
256
|
|
|
257
|
+
An object Root.neo writes is init-built when its class has an `init` block. A
|
|
258
|
+
declaration binding may name a member inside it, and the push stores that
|
|
259
|
+
member's row so the binding has a target. A reference an `init` block or
|
|
260
|
+
constructor captures, such as `new Rule(Reference(this.Weather))`, stores its
|
|
261
|
+
target's ID and keeps the target's row. Status refuses two forms, because their
|
|
262
|
+
target has no row to check until the push stores it: a value row's reference to
|
|
263
|
+
a member of an init-built object (bind it from a declaration instead), and a
|
|
264
|
+
binding to a class or list an `init` block builds. A project an older CLI pushed
|
|
265
|
+
with such a captured reference stored it without its target; push once to
|
|
266
|
+
repair it.
|
|
267
|
+
|
|
257
268
|
## Defaults and localization
|
|
258
269
|
|
|
259
270
|
A class member whose default constructs its declared type emits a contextual
|