class MyClass
{
const Func myFunc := |Foo foo, Bar bar| {
// do stuff
}
MyType myVar := MyType()
Void main() {
// do more stuff
}
}
In this example, the class called Bar belongs to another pod but I forgot to add
using myOtherPod
so the compiler couldn't figure it out, but the error message it gave on line 3 was quite misleading as it only said:
Expected expression, not '|'
(Thanks Steve for pointing out what the actual error was: see StackOverflow)
If I removed the definition of myFunc altogether and MyType was also on the non-referenced pod, the compiler error is far more obvious:
Unknown type 'MyType'
Can the first compilation error message be improved, please?
brianWed 4 Oct 2017
This is a side effect of the parser needing to know whether an identifier is a known type. Its a fairly deep requirement of how the parser design works and is tied up into lots of complexity with deciding how to parse closures with and without type parameters. I spend a little time seeing if can get an exact error message such as "Unknown type", but it would require serious redesign of the parser. So as simple solution I fixed it to report a more meaningful error message when it knows that pipe should be a closure:
LightDye Wed 28 Jun 2017
I have a class of this form:
In this example, the class called Bar belongs to another pod but I forgot to add
so the compiler couldn't figure it out, but the error message it gave on line 3 was quite misleading as it only said:
(Thanks Steve for pointing out what the actual error was: see StackOverflow)
If I removed the definition of
myFunc
altogether andMyType
was also on the non-referenced pod, the compiler error is far more obvious:Can the first compilation error message be improved, please?
brian Wed 4 Oct 2017
This is a side effect of the parser needing to know whether an identifier is a known type. Its a fairly deep requirement of how the parser design works and is tied up into lots of complexity with deciding how to parse closures with and without type parameters. I spend a little time seeing if can get an exact error message such as "Unknown type", but it would require serious redesign of the parser. So as simple solution I fixed it to report a more meaningful error message when it knows that pipe should be a closure: