JoeStrout / miniscript

source code of both C# and C++ implementations of the MiniScript scripting language
MIT License
280 stars 64 forks source link

Poor error message when assigning to a property of self at the global scope #132

Open JoeStrout opened 8 months ago

JoeStrout commented 8 months ago

I find it's surprisingly easy, when coding along and concentrating on other things, to create a class and then try to add a method this way:

self.foo = function
    // do some stuff
end function

And when you do this, you get a poor error message: "Runtime Error: can't set indexed element of null". What's worse, if this occurs in the main file, the stackTrace is empty — and if it occurs in an import module, it will claim the error is on the import line!

Curiously, trying to assign to super.foo produces a better error ("Undefined Identifier: 'super' is unknown in this context").

So:

  1. Catch trying to use self. when self is undefined, and print a better error message. Ideal might be something like "self undefined; not in object context"
  2. Ensure that the line number is correctly reported, both in the main file and in an import module.