uqbar-project / wollok

Wollok Programming Language
GNU General Public License v3.0
60 stars 16 forks source link

java.lang.reflect.InvocationTargetException instead of wollok.lang.MessageNotUnderstoodException #763

Closed flbulgarelli closed 8 years ago

flbulgarelli commented 8 years ago

Sending ! message to a non boolean has unexpected results. See the following REPL session:

>>>var x = 4
4
>>> !x
     Error de la VM de Wollok en la linea (1): !x:
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.uqbar.project.wollok.interpreter.operation.WollokDeclarativeNativeUnaryOperations$2.apply(WollokDeclarativeNativeUnaryOperations.java:55)
    at org.uqbar.project.wollok.interpreter.operation.WollokDeclarativeNativeUnaryOperations$2.apply(WollokDeclarativeNativeUnaryOperations.java:1)
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator._evaluate(WollokInterpreterEvaluator.java:778)
    at org.uqbar.project.wollok.launch.WollokLauncherInterpreterEvaluator.evaluate(WollokLauncherInterpreterEvaluator.java:200)
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator.evaluate(WollokInterpreterEvaluator.java:1)
    at org.uqbar.project.wollok.interpreter.WollokInterpreter.eval(WollokInterpreter.java:236)
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator.eval(WollokInterpreterEvaluator.java:132)
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator$1.apply(WollokInterpreterEvaluator.java:139)
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator$1.apply(WollokInterpreterEvaluator.java:1)
    at org.eclipse.xtext.xbase.lib.IteratorExtensions.fold(IteratorExtensions.java:627)
    at org.eclipse.xtext.xbase.lib.IterableExtensions.fold(IterableExtensions.java:536)
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator.evalAll(WollokInterpreterEvaluator.java:142)
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator._evaluate(WollokInterpreterEvaluator.java:187)
    at org.uqbar.project.wollok.launch.WollokLauncherInterpreterEvaluator.evaluate(WollokLauncherInterpreterEvaluator.java:214)
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator.evaluate(WollokInterpreterEvaluator.java:1)
    at org.uqbar.project.wollok.interpreter.WollokInterpreter.eval(WollokInterpreter.java:236)
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator.eval(WollokInterpreterEvaluator.java:132)
    at org.uqbar.project.wollok.launch.WollokLauncherInterpreterEvaluator._evaluate(WollokLauncherInterpreterEvaluator.java:68)
    at org.uqbar.project.wollok.launch.WollokLauncherInterpreterEvaluator.evaluate(WollokLauncherInterpreterEvaluator.java:212)
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator.evaluate(WollokInterpreterEvaluator.java:1)
    at org.uqbar.project.wollok.interpreter.WollokInterpreter.interpret(WollokInterpreter.java:149)
    at org.uqbar.project.wollok.launch.repl.WollokRepl.executeInput(WollokRepl.java:164)
    at org.uqbar.project.wollok.launch.repl.WollokRepl.startRepl(WollokRepl.java:86)
    at org.uqbar.project.wollok.launch.WollokLauncher.doSomething(WollokLauncher.java:47)
    at org.uqbar.project.wollok.launch.WollokChecker.doMain(WollokChecker.java:83)
    at org.uqbar.project.wollok.launch.WollokLauncher.main(WollokLauncher.java:31)
Caused by: org.uqbar.project.wollok.interpreter.core.WollokProgramExceptionWrapper
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator._evaluate(WollokInterpreterEvaluator.java:342)
    at org.uqbar.project.wollok.launch.WollokLauncherInterpreterEvaluator.evaluate(WollokLauncherInterpreterEvaluator.java:196)
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator.evaluate(WollokInterpreterEvaluator.java:1)
    at org.uqbar.project.wollok.interpreter.WollokInterpreter.eval(WollokInterpreter.java:236)
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator.eval(WollokInterpreterEvaluator.java:132)
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator$1.apply(WollokInterpreterEvaluator.java:139)
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator$1.apply(WollokInterpreterEvaluator.java:1)
    at org.eclipse.xtext.xbase.lib.IteratorExtensions.fold(IteratorExtensions.java:627)
    at org.eclipse.xtext.xbase.lib.IterableExtensions.fold(IterableExtensions.java:536)
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator.evalAll(WollokInterpreterEvaluator.java:142)
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator._evaluate(WollokInterpreterEvaluator.java:678)
    at org.uqbar.project.wollok.launch.WollokLauncherInterpreterEvaluator.evaluate(WollokLauncherInterpreterEvaluator.java:170)
    at org.uqbar.project.wollok.interpreter.WollokInterpreterEvaluator.evaluate(WollokInterpreterEvaluator.java:1)
    at org.uqbar.project.wollok.interpreter.WollokInterpreter.eval(WollokInterpreter.java:236)
    at org.uqbar.project.wollok.interpreter.AbstractWollokCallable.eval(AbstractWollokCallable.java:133)
    at org.uqbar.project.wollok.interpreter.AbstractWollokCallable$1.apply(AbstractWollokCallable.java:88)
    at org.uqbar.project.wollok.interpreter.AbstractWollokCallable$1.apply(AbstractWollokCallable.java:1)
    at org.uqbar.project.wollok.interpreter.WollokInterpreter.performOnStack(WollokInterpreter.java:193)
    at org.uqbar.project.wollok.interpreter.AbstractWollokCallable.call(AbstractWollokCallable.java:101)
    at org.uqbar.project.wollok.interpreter.core.WollokObject.call(WollokObject.java:122)
    at org.uqbar.project.wollok.interpreter.core.WollokObject.throwMessageNotUnderstood(WollokObject.java:167)
    at org.uqbar.project.wollok.interpreter.core.WollokObject.call(WollokObject.java:120)
    at org.uqbar.project.wollok.interpreter.operation.WollokDeclarativeNativeUnaryOperations._negate(WollokDeclarativeNativeUnaryOperations.java:91)
    at org.uqbar.project.wollok.interpreter.operation.WollokDeclarativeNativeUnaryOperations.negate(WollokDeclarativeNativeUnaryOperations.java:140)
    at org.uqbar.project.wollok.interpreter.operation.WollokDeclarativeNativeUnaryOperations.negateOperation(WollokDeclarativeNativeUnaryOperations.java:87)
    ... 30 more
javierfernandes commented 8 years ago

Fixed !

Example:

Wollok interactive console (type "quit" to quit):
>>> !null
ERROR: Expecting a boolean (line: 1)
>>> !"algo"
ERROR: Expecting a boolean (line: 1)
>>> !2
ERROR: Expecting a boolean (line: 1)