digitalmars.D.bugs - Unclear error message
- Nick (6/6) Aug 11 2004 Calling an undefined function gives a rather strange error message:
- J C Calvarese (34/44) Aug 11 2004 It doesn't seem like much of a bug to me. The compiler is trying very
- Walter (3/3) Aug 15 2004 The 'int' you're seeing is the result of the compiler, at the first erro...
Calling an undefined function gives a rather strange error message: foo() gives tst.d(3): undefined identifier foo tst.d(3): function expected before (), not 'int' There's no 'int' anywhere :) Nick
Aug 11 2004
Nick wrote:Calling an undefined function gives a rather strange error message: foo() gives tst.d(3): undefined identifier foo tst.d(3): function expected before (), not 'int' There's no 'int' anywhere :) NickIt doesn't seem like much of a bug to me. The compiler is trying very hard to understand what you gave it. The first suggestion is produces absolutely right on the mark: "What's foo?" Once you define your function, the compiler doesn't assume it's an int anymore, does it? The second line is the result of the compiler trying to be helpful, but the compiler can't read the mind of the user. It seems that the compiler assumes you meant to declare an int when it finds an undefined identifier. The second line isn't a very good guess in this case, but int is a common datatype, so could be helpful often. Another case: void main() { foo[]; } Output... test.d(4): undefined identifier foo test.d(4): int cannot be sliced with [] It seems to support my theory about the int assumption. By the way, the code you specified gives this: test.d(1): no identifier for declarator test.d(1): semicolon expected, not 'EOF' I suspect you were using code like this: void main() { foo(); } test.d(4): undefined identifier foo test.d(4): function expected before (), not 'int' DMD used to only produce pretty much one error at a time, but I like this new capability to produce multiple errors. -- Justin (a/k/a jcc7) http://jcc_7.tripod.com/d/
Aug 11 2004
The 'int' you're seeing is the result of the compiler, at the first error, trying to patch things up so it can proceed. It does this by just assuming one meant 'int' and then going forward.
Aug 15 2004