-
Notifications
You must be signed in to change notification settings - Fork 245
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reject worlds with interfaces that can access both imports and exports #1081
Reject worlds with interfaces that can access both imports and exports #1081
Conversation
This commit is a fix for the issue described in WebAssembly/component-model#208. The process of elaborating a world's exports is no longer as straightforward as imports and additionally is no longer infallible. Instead metadata is tracked to ensure that transitively added imports are always used as imports and never both as imports and exports.
5a2b96b
to
5b97c46
Compare
--> tests/ui/parse-fail/import-and-export5.wit:13:10 | ||
| | ||
13 | export anon: interface { | ||
| ^--- |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
At first glance, this error message seems confusing, because the import-and-export5.wit file doesn't contain the import
keyword, so the user may not know what this is referring to.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes I definitely agree, and that's the subject of this FIXME which I'm hoping to leave for later as an improvement. These sorts of error messages in my experience are possible but pretty difficult to write up and implement so I'd ideally like to make sure it's motivated first as opposed to "only I'll see this for years as I'm writing tests"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, I hadn't seen the code yet :-). This makes sense. Perhaps a little different wording, perhaps "interface transitively depends on an interface in incompatible ways" or so, which would be a little less informative, but less likely to give people a misleading impression?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds good to me 👍
Releases recent changes such as: * More support for the gc proposal. bytecodealliance#1045 bytecodealliance#1059 * Support for resources throughout most tooling. bytecodealliance#1053 bytecodealliance#1068 bytecodealliance#1070 bytecodealliance#1082 bytecodealliance#1079 bytecodealliance#1083 bytecodealliance#1084 bytecodealliance#1105 bytecodealliance#1113 bytecodealliance#1116 * Support for `include` in WIT files. bytecodealliance#1054 bytecodealliance#1085 bytecodealliance#1088 * WIT worlds may now be rejected if the same interface can be "reached" as both an import and an export simultaneously. bytecodealliance#1081 bytecodealliance#1107 * Support for registry metadata in `wasm-tools metadata`. bytecodealliance#1060 * A new subcommand `wasm-tools component targets`. bytecodealliance#1089 * An `--out-dir` argument is supported on `wasm-tools component wit` to print the entire `Resolve` instead of just one package. bytecodealliance#1108 * Miscellaneous bug fixes and improvements. bytecodealliance#1061 bytecodealliance#1065 bytecodealliance#1074 bytecodealliance#1073 bytecodealliance#1078 bytecodealliance#1077 bytecodealliance#1072 bytecodealliance#1086 bytecodealliance#1091 bytecodealliance#1094 bytecodealliance#1114 bytecodealliance#1106
Releases recent changes such as: * More support for the gc proposal. [bytecodealliance#1045](bytecodealliance#1045) [bytecodealliance#1059](bytecodealliance#1059) * Support for resources throughout most tooling. [bytecodealliance#1053](bytecodealliance#1053) [bytecodealliance#1068](bytecodealliance#1068) [bytecodealliance#1070](bytecodealliance#1070) [bytecodealliance#1082](bytecodealliance#1082) [bytecodealliance#1079](bytecodealliance#1079) [bytecodealliance#1083](bytecodealliance#1083) [bytecodealliance#1084](bytecodealliance#1084) [bytecodealliance#1105](bytecodealliance#1105) [bytecodealliance#1113](bytecodealliance#1113) [bytecodealliance#1116](bytecodealliance#1116) * Support for `include` in WIT files. [bytecodealliance#1054](bytecodealliance#1054) [bytecodealliance#1085](bytecodealliance#1085) [bytecodealliance#1088](bytecodealliance#1088) * WIT worlds may now be rejected if the same interface can be "reached" as both an import and an export simultaneously. [bytecodealliance#1081](bytecodealliance#1081) [bytecodealliance#1107](bytecodealliance#1107) * Support for registry metadata in `wasm-tools metadata`. [bytecodealliance#1060](bytecodealliance#1060) * A new subcommand `wasm-tools component targets`. [bytecodealliance#1089](bytecodealliance#1089) * An `--out-dir` argument is supported on `wasm-tools component wit` to print the entire `Resolve` instead of just one package. [bytecodealliance#1108](bytecodealliance#1108) * Miscellaneous bug fixes and improvements. [bytecodealliance#1061](bytecodealliance#1061) [bytecodealliance#1065](bytecodealliance#1065) [bytecodealliance#1074](bytecodealliance#1074) [bytecodealliance#1073](bytecodealliance#1073) [bytecodealliance#1078](bytecodealliance#1078) [bytecodealliance#1077](bytecodealliance#1077) [bytecodealliance#1072](bytecodealliance#1072) [bytecodealliance#1086](bytecodealliance#1086) [bytecodealliance#1091](bytecodealliance#1091) [bytecodealliance#1094](bytecodealliance#1094) [bytecodealliance#1114](bytecodealliance#1114) [bytecodealliance#1106](bytecodealliance#1106)
Releases recent changes such as: * More support for the gc proposal. [#1045](#1045) [#1059](#1059) * Support for resources throughout most tooling. [#1053](#1053) [#1068](#1068) [#1070](#1070) [#1082](#1082) [#1079](#1079) [#1083](#1083) [#1084](#1084) [#1105](#1105) [#1113](#1113) [#1116](#1116) * Support for `include` in WIT files. [#1054](#1054) [#1085](#1085) [#1088](#1088) * WIT worlds may now be rejected if the same interface can be "reached" as both an import and an export simultaneously. [#1081](#1081) [#1107](#1107) * Support for registry metadata in `wasm-tools metadata`. [#1060](#1060) * A new subcommand `wasm-tools component targets`. [#1089](#1089) * An `--out-dir` argument is supported on `wasm-tools component wit` to print the entire `Resolve` instead of just one package. [#1108](#1108) * Miscellaneous bug fixes and improvements. [#1061](#1061) [#1065](#1065) [#1074](#1074) [#1073](#1073) [#1078](#1078) [#1077](#1077) [#1072](#1072) [#1086](#1086) [#1091](#1091) [#1094](#1094) [#1114](#1114) [#1106](#1106)
This commit is a fix for the issue described in
WebAssembly/component-model#208. The process of elaborating a world's exports is no longer as straightforward as imports and additionally is no longer infallible. Instead metadata is tracked to ensure that transitively added imports are always used as imports and never both as imports and exports.