docs(lang): fix invalid protocol method-signature snippets — (self) -> () -> s64 [F0.6]
A protocol method signature omits the receiver; a bare `self` has no type, so
`protocol { … :: (self) … }` fails at parse with 'expected :'. Correct the three
member-exemption doc snippets (readme.md, specs.md, issues/0089) to the valid
signature form, matching examples/0158's `Speaker :: protocol { s2 :: () -> s64; }`.
This commit is contained in:
@@ -75,7 +75,7 @@
|
|||||||
> ([src/parser.zig]); a bare `f32` / `f64` is therefore rejected at parse
|
> ([src/parser.zig]); a bare `f32` / `f64` is therefore rejected at parse
|
||||||
> (`expected field name in struct`) even in a member position, and still needs
|
> (`expected field name in struct`) even in a member position, and still needs
|
||||||
> the backtick there too — `` struct { `f32: s64; } `` / `` union { `f64: … } ``
|
> the backtick there too — `` struct { `f32: s64; } `` / `` union { `f64: … } ``
|
||||||
> / `` protocol { `f32 :: (self); } `` work as field / tag / method names.
|
> / `` protocol { `f32 :: () -> s64; } `` work as field / tag / method names.
|
||||||
> The exemption stops at member *definitions*: an `impl` method is a real
|
> The exemption stops at member *definitions*: an `impl` method is a real
|
||||||
> function reached through the `impl_block` → `fn_decl` arm, so a
|
> function reached through the `impl_block` → `fn_decl` arm, so a
|
||||||
> reserved-spelled impl method needs the backtick (`` `s2 :: (self) ``), no
|
> reserved-spelled impl method needs the backtick (`` `s2 :: (self) ``), no
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ function declaration, an `impl` method definition, or a `::` type declaration
|
|||||||
(`s2 :: 5` and `s2 :: (n) { … }` are rejected just like `s2 := 5`). **Member-name
|
(`s2 :: 5` and `s2 :: (n) { … }` are rejected just like `s2 := 5`). **Member-name
|
||||||
positions are exempt**: a struct *field*, a union *tag*, and a protocol
|
positions are exempt**: a struct *field*, a union *tag*, and a protocol
|
||||||
*method-signature* may be a bare reserved spelling (`struct { s2: s64 }`,
|
*method-signature* may be a bare reserved spelling (`struct { s2: s64 }`,
|
||||||
`union { u8: … }`, `protocol { s2 :: (self) }`) — they are reached via `obj.name`,
|
`union { u8: … }`, `protocol { s2 :: () -> s64 }`) — they are reached via `obj.name`,
|
||||||
so they never mis-lower. The bare exemption covers only the identifier-classified
|
so they never mis-lower. The bare exemption covers only the identifier-classified
|
||||||
reserved names (`s1`..`s64`, `u1`..`u64`, `bool`, `string`, `void`, `usize`,
|
reserved names (`s1`..`s64`, `u1`..`u64`, `bool`, `string`, `void`, `usize`,
|
||||||
`isize`, `Any`); `f32` and `f64` are lexer keywords, so even in a member slot they
|
`isize`, `Any`); `f32` and `f64` are lexer keywords, so even in a member slot they
|
||||||
|
|||||||
2
specs.md
2
specs.md
@@ -45,7 +45,7 @@ reserved spellings — `s1`..`s64`, `u1`..`u64`, `bool`, `string`, `void`, `usiz
|
|||||||
member-name slots require an identifier token; a bare `f32` / `f64` is therefore
|
member-name slots require an identifier token; a bare `f32` / `f64` is therefore
|
||||||
rejected at parse (`expected field name in struct`) even in a member position. Use
|
rejected at parse (`expected field name in struct`) even in a member position. Use
|
||||||
the backtick there too — `` struct { `f32: s64; } `` / `` union { `f64: … } `` /
|
the backtick there too — `` struct { `f32: s64; } `` / `` union { `f64: … } `` /
|
||||||
`` protocol { `f32 :: (self); } `` work as field / tag / method names.
|
`` protocol { `f32 :: () -> s64; } `` work as field / tag / method names.
|
||||||
|
|
||||||
```sx
|
```sx
|
||||||
s2 := 2.5; // ERROR: 's2' is a reserved type name and cannot be used as an identifier
|
s2 := 2.5; // ERROR: 's2' is a reserved type name and cannot be used as an identifier
|
||||||
|
|||||||
Reference in New Issue
Block a user