Skip to content

Commit dcdd3cc

Browse files
doc: update E4160
1 parent 35f6ec4 commit dcdd3cc

File tree

9 files changed

+55
-0
lines changed

9 files changed

+55
-0
lines changed

next/language/error_codes/E4160.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# E4160
2+
3+
Type mismatch with mbti.
4+
5+
When a package implements a
6+
[virtual package](/toolchain/moon/package.md#virtual-package), it is checked
7+
against the interface of that virtual package, and this error is emitted if some
8+
of the interface has different types.
9+
10+
## Erroneous example
11+
12+
```{literalinclude} /sources/error_codes/4160_error/E4160.mbti
13+
:language: moonbit
14+
:caption: E4160.mbti
15+
```
16+
17+
```{literalinclude} /sources/error_codes/4160_error/top.mbt
18+
:language: moonbit
19+
:caption: top.mbt
20+
```
21+
22+
## Suggestion
23+
24+
Modify the implementation such that it has the exact signature as the virtual
25+
package it declared to implement.
26+
27+
```{literalinclude} /sources/error_codes/4160_fixed/top.mbt
28+
:language: moonbit
29+
```
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package "moonbit-community/E4160";
2+
3+
fn f() -> Unit
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"name": "moonbit-community/E4160"}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"virtual": {
3+
"has-default": true
4+
}
5+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
///|
2+
pub fn f() -> Int {
3+
42
4+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package "moonbit-community/E4160-fixed";
2+
3+
fn f() -> Unit
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"name": "moonbit-community/E4160-fixed"}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"virtual": {
3+
"has-default": true
4+
}
5+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
///|
2+
pub fn f() -> Unit {
3+
4+
}

0 commit comments

Comments
 (0)