mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-30 23:31:12 +00:00
Improve expectation for platform requires mismatch
``` ── TYPE MISMATCH ───── examples/hello-world/rust-platform/./Package-Config.roc ─ Something is off with the type annotation of the main required symbol: 2│ requires {} { main : a -> a } ^^^^^^ This #UserApp.main value is a: Str But the type annotation on main says it should be: a -> a ──────────────────────────────────────────────────────────────────────────────── ```
This commit is contained in:
parent
514af619f5
commit
ef77ff35cf
3 changed files with 11 additions and 1 deletions
|
@ -155,7 +155,7 @@ fn constrain_symbols_from_requires(
|
||||||
Expected::FromAnnotation(
|
Expected::FromAnnotation(
|
||||||
loc_symbol.map(|&s| Pattern::Identifier(s)),
|
loc_symbol.map(|&s| Pattern::Identifier(s)),
|
||||||
arity,
|
arity,
|
||||||
AnnotationSource::TypedBody {
|
AnnotationSource::RequiredSymbol {
|
||||||
region: loc_type.region,
|
region: loc_type.region,
|
||||||
},
|
},
|
||||||
loc_type.value,
|
loc_type.value,
|
||||||
|
|
|
@ -1708,6 +1708,9 @@ pub enum AnnotationSource {
|
||||||
TypedBody {
|
TypedBody {
|
||||||
region: Region,
|
region: Region,
|
||||||
},
|
},
|
||||||
|
RequiredSymbol {
|
||||||
|
region: Region,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AnnotationSource {
|
impl AnnotationSource {
|
||||||
|
@ -1716,6 +1719,7 @@ impl AnnotationSource {
|
||||||
&Self::TypedIfBranch { region, .. }
|
&Self::TypedIfBranch { region, .. }
|
||||||
| &Self::TypedWhenBranch { region, .. }
|
| &Self::TypedWhenBranch { region, .. }
|
||||||
| &Self::TypedBody { region, .. } => region,
|
| &Self::TypedBody { region, .. } => region,
|
||||||
|
&Self::RequiredSymbol { region, .. } => region,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -540,12 +540,18 @@ fn to_expr_report<'b>(
|
||||||
the_name_text,
|
the_name_text,
|
||||||
alloc.text(" definition:"),
|
alloc.text(" definition:"),
|
||||||
]),
|
]),
|
||||||
|
RequiredSymbol { .. } => alloc.concat([
|
||||||
|
alloc.text("type annotation of "),
|
||||||
|
the_name_text,
|
||||||
|
alloc.text(" required symbol:"),
|
||||||
|
]),
|
||||||
};
|
};
|
||||||
|
|
||||||
let it_is = match annotation_source {
|
let it_is = match annotation_source {
|
||||||
TypedIfBranch { index, .. } => format!("The {} branch is", index.ordinal()),
|
TypedIfBranch { index, .. } => format!("The {} branch is", index.ordinal()),
|
||||||
TypedWhenBranch { index, .. } => format!("The {} branch is", index.ordinal()),
|
TypedWhenBranch { index, .. } => format!("The {} branch is", index.ordinal()),
|
||||||
TypedBody { .. } => "The body is".into(),
|
TypedBody { .. } => "The body is".into(),
|
||||||
|
RequiredSymbol { .. } => "The provided type is".into(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let expectation_context = ExpectationContext::Annotation {
|
let expectation_context = ExpectationContext::Annotation {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue