Skip to content

Commit ec2fe9e

Browse files
committed
wit: handle % in WIT package, world, and interface identfiers
1 parent 1ffcd37 commit ec2fe9e

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

wit/ident.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ type Ident struct {
3434
// returning any errors encountered. The resulting Ident
3535
// may not be valid.
3636
func ParseIdent(s string) (Ident, error) {
37+
s = strings.ReplaceAll(s, "%", "")
3738
var id Ident
3839
name, ver, hasVer := strings.Cut(s, "@")
3940
base, ext, hasExt := strings.Cut(name, "/")

wit/ident_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ func TestIdent(t *testing.T) {
1818
{"wasi:io/streams", Ident{Namespace: "wasi", Package: "io", Extension: "streams"}, false},
1919
{"wasi:io/[email protected]", Ident{Namespace: "wasi", Package: "io", Extension: "streams", Version: semver.New("0.2.0")}, false},
2020

21+
// Escaping
22+
{"%use:%own", Ident{Namespace: "use", Package: "own"}, false},
23+
{"%use:%[email protected]", Ident{Namespace: "use", Package: "own", Version: semver.New("0.2.0")}, false},
24+
{"%use:%own/%type", Ident{Namespace: "use", Package: "own", Extension: "type"}, false},
25+
{"%use:%own/%[email protected]", Ident{Namespace: "use", Package: "own", Extension: "type", Version: semver.New("0.2.0")}, false},
26+
2127
// Errors
2228
{"", Ident{}, true},
2329
{":", Ident{}, true},

0 commit comments

Comments
 (0)