-
Notifications
You must be signed in to change notification settings - Fork 324
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Error message representations (#1498)
- Loading branch information
Showing
32 changed files
with
738 additions
and
42 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
33 changes: 33 additions & 0 deletions
33
...terpreter/node/expression/builtin/error/displaytext/ArithmeticErrorToDisplayTextNode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package org.enso.interpreter.node.expression.builtin.error.displaytext; | ||
|
||
import com.oracle.truffle.api.dsl.Specialization; | ||
import com.oracle.truffle.api.nodes.Node; | ||
import com.oracle.truffle.api.nodes.UnexpectedResultException; | ||
import org.enso.interpreter.dsl.BuiltinMethod; | ||
import org.enso.interpreter.runtime.callable.atom.Atom; | ||
import org.enso.interpreter.runtime.callable.atom.AtomConstructor; | ||
import org.enso.interpreter.runtime.data.text.Text; | ||
import org.enso.interpreter.runtime.type.TypesGen; | ||
|
||
@BuiltinMethod(type = "Arithmetic_Error", name = "to_display_text") | ||
public abstract class ArithmeticErrorToDisplayTextNode extends Node { | ||
static ArithmeticErrorToDisplayTextNode build() { | ||
return ArithmeticErrorToDisplayTextNodeGen.create(); | ||
} | ||
|
||
abstract Text execute(Object _this); | ||
|
||
@Specialization | ||
Text doAtom(Atom _this) { | ||
try { | ||
return Text.create("Arithmetic error: ", TypesGen.expectText(_this.getFields()[0])); | ||
} catch (UnexpectedResultException e) { | ||
return Text.create("Arithmetic error."); | ||
} | ||
} | ||
|
||
@Specialization | ||
Text doConstructor(AtomConstructor _this) { | ||
return Text.create("Arithmetic error."); | ||
} | ||
} |
31 changes: 31 additions & 0 deletions
31
...so/interpreter/node/expression/builtin/error/displaytext/ArityErrorToDisplayTextNode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
package org.enso.interpreter.node.expression.builtin.error.displaytext; | ||
|
||
import com.oracle.truffle.api.dsl.Specialization; | ||
import com.oracle.truffle.api.nodes.Node; | ||
import org.enso.interpreter.dsl.BuiltinMethod; | ||
import org.enso.interpreter.runtime.callable.atom.Atom; | ||
import org.enso.interpreter.runtime.callable.atom.AtomConstructor; | ||
import org.enso.interpreter.runtime.data.text.Text; | ||
|
||
@BuiltinMethod(type = "Arity_Error", name = "to_display_text") | ||
public abstract class ArityErrorToDisplayTextNode extends Node { | ||
static ArityErrorToDisplayTextNode build() { | ||
return ArityErrorToDisplayTextNodeGen.create(); | ||
} | ||
|
||
abstract Text execute(Object _this); | ||
|
||
@Specialization | ||
Text doAtom(Atom _this) { | ||
return Text.create("Wrong number of arguments. Expected ") | ||
.add(String.valueOf(_this.getFields()[0])) | ||
.add(", but got ") | ||
.add(String.valueOf(_this.getFields()[1])) | ||
.add("."); | ||
} | ||
|
||
@Specialization | ||
Text doConstructor(AtomConstructor _this) { | ||
return Text.create("Wrong number of arguments."); | ||
} | ||
} |
33 changes: 33 additions & 0 deletions
33
.../interpreter/node/expression/builtin/error/displaytext/CompileErrorToDisplayTextNode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package org.enso.interpreter.node.expression.builtin.error.displaytext; | ||
|
||
import com.oracle.truffle.api.dsl.Specialization; | ||
import com.oracle.truffle.api.nodes.Node; | ||
import com.oracle.truffle.api.nodes.UnexpectedResultException; | ||
import org.enso.interpreter.dsl.BuiltinMethod; | ||
import org.enso.interpreter.runtime.callable.atom.Atom; | ||
import org.enso.interpreter.runtime.callable.atom.AtomConstructor; | ||
import org.enso.interpreter.runtime.data.text.Text; | ||
import org.enso.interpreter.runtime.type.TypesGen; | ||
|
||
@BuiltinMethod(type = "Compile_Error", name = "to_display_text") | ||
public abstract class CompileErrorToDisplayTextNode extends Node { | ||
static CompileErrorToDisplayTextNode build() { | ||
return CompileErrorToDisplayTextNodeGen.create(); | ||
} | ||
|
||
abstract Text execute(Object _this); | ||
|
||
@Specialization | ||
Text doAtom(Atom _this) { | ||
try { | ||
return Text.create("Compile error: ", TypesGen.expectText(_this.getFields()[0])); | ||
} catch (UnexpectedResultException e) { | ||
return Text.create("Compile error."); | ||
} | ||
} | ||
|
||
@Specialization | ||
Text doConstructor(AtomConstructor _this) { | ||
return Text.create("Compile error."); | ||
} | ||
} |
33 changes: 33 additions & 0 deletions
33
.../expression/builtin/error/displaytext/InexhaustivePatternMatchErrorToDisplayTextNode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package org.enso.interpreter.node.expression.builtin.error.displaytext; | ||
|
||
import com.oracle.truffle.api.dsl.Cached; | ||
import com.oracle.truffle.api.dsl.Specialization; | ||
import com.oracle.truffle.api.nodes.Node; | ||
import com.oracle.truffle.api.nodes.UnexpectedResultException; | ||
import org.enso.interpreter.dsl.BuiltinMethod; | ||
import org.enso.interpreter.node.expression.builtin.text.util.TypeToDisplayTextNode; | ||
import org.enso.interpreter.runtime.callable.atom.Atom; | ||
import org.enso.interpreter.runtime.callable.atom.AtomConstructor; | ||
import org.enso.interpreter.runtime.data.text.Text; | ||
import org.enso.interpreter.runtime.type.TypesGen; | ||
|
||
@BuiltinMethod(type = "Inexhaustive_Pattern_Match_Error", name = "to_display_text") | ||
public abstract class InexhaustivePatternMatchErrorToDisplayTextNode extends Node { | ||
static InexhaustivePatternMatchErrorToDisplayTextNode build() { | ||
return InexhaustivePatternMatchErrorToDisplayTextNodeGen.create(); | ||
} | ||
|
||
abstract Text execute(Object _this); | ||
|
||
@Specialization | ||
Text doAtom(Atom _this, @Cached TypeToDisplayTextNode displayTypeNode) { | ||
return Text.create("Inexhaustive pattern match: no branch matches ") | ||
.add(displayTypeNode.execute(_this.getFields()[0])) | ||
.add("."); | ||
} | ||
|
||
@Specialization | ||
Text doConstructor(AtomConstructor _this) { | ||
return Text.create("Inexhaustive pattern match."); | ||
} | ||
} |
29 changes: 29 additions & 0 deletions
29
...er/node/expression/builtin/error/displaytext/InvalidArrayIndexErrorToDisplayTextNode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
package org.enso.interpreter.node.expression.builtin.error.displaytext; | ||
|
||
import com.oracle.truffle.api.dsl.Specialization; | ||
import com.oracle.truffle.api.nodes.Node; | ||
import com.oracle.truffle.api.nodes.UnexpectedResultException; | ||
import org.enso.interpreter.dsl.BuiltinMethod; | ||
import org.enso.interpreter.runtime.callable.atom.Atom; | ||
import org.enso.interpreter.runtime.callable.atom.AtomConstructor; | ||
import org.enso.interpreter.runtime.data.text.Text; | ||
import org.enso.interpreter.runtime.type.TypesGen; | ||
|
||
@BuiltinMethod(type = "Invalid_Array_Index_Error", name = "to_display_text") | ||
public abstract class InvalidArrayIndexErrorToDisplayTextNode extends Node { | ||
static InvalidArrayIndexErrorToDisplayTextNode build() { | ||
return InvalidArrayIndexErrorToDisplayTextNodeGen.create(); | ||
} | ||
|
||
abstract Text execute(Object _this); | ||
|
||
@Specialization | ||
Text doAtom(Atom _this) { | ||
return Text.create("Invalid array index: ", String.valueOf(_this.getFields()[1])); | ||
} | ||
|
||
@Specialization | ||
Text doConstructor(AtomConstructor _this) { | ||
return Text.create("Invalid array index."); | ||
} | ||
} |
35 changes: 35 additions & 0 deletions
35
...r/node/expression/builtin/error/displaytext/ModuleDoesNotExistErrorToDisplayTextNode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
package org.enso.interpreter.node.expression.builtin.error.displaytext; | ||
|
||
import com.oracle.truffle.api.dsl.Specialization; | ||
import com.oracle.truffle.api.nodes.Node; | ||
import com.oracle.truffle.api.nodes.UnexpectedResultException; | ||
import org.enso.interpreter.dsl.BuiltinMethod; | ||
import org.enso.interpreter.runtime.callable.atom.Atom; | ||
import org.enso.interpreter.runtime.callable.atom.AtomConstructor; | ||
import org.enso.interpreter.runtime.data.text.Text; | ||
import org.enso.interpreter.runtime.type.TypesGen; | ||
|
||
@BuiltinMethod(type = "Module_Does_Not_Exist_Error", name = "to_display_text") | ||
public abstract class ModuleDoesNotExistErrorToDisplayTextNode extends Node { | ||
static ModuleDoesNotExistErrorToDisplayTextNode build() { | ||
return ModuleDoesNotExistErrorToDisplayTextNodeGen.create(); | ||
} | ||
|
||
abstract Text execute(Object _this); | ||
|
||
@Specialization | ||
Text doAtom(Atom _this) { | ||
try { | ||
return Text.create("Module ") | ||
.add(TypesGen.expectText(_this.getFields()[0])) | ||
.add(" does not exist."); | ||
} catch (UnexpectedResultException e) { | ||
return Text.create("Module does not exist."); | ||
} | ||
} | ||
|
||
@Specialization | ||
Text doConstructor(AtomConstructor _this) { | ||
return Text.create("Module does not exist."); | ||
} | ||
} |
21 changes: 21 additions & 0 deletions
21
...r/node/expression/builtin/error/displaytext/ModuleNotInPackageErrorToDisplayTextNode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package org.enso.interpreter.node.expression.builtin.error.displaytext; | ||
|
||
import com.oracle.truffle.api.dsl.Cached; | ||
import com.oracle.truffle.api.dsl.Specialization; | ||
import com.oracle.truffle.api.interop.InteropLibrary; | ||
import com.oracle.truffle.api.interop.UnsupportedMessageException; | ||
import com.oracle.truffle.api.library.CachedLibrary; | ||
import com.oracle.truffle.api.nodes.Node; | ||
import org.enso.interpreter.dsl.BuiltinMethod; | ||
import org.enso.interpreter.node.expression.builtin.text.util.TypeToDisplayTextNode; | ||
import org.enso.interpreter.runtime.callable.atom.Atom; | ||
import org.enso.interpreter.runtime.callable.atom.AtomConstructor; | ||
import org.enso.interpreter.runtime.data.text.Text; | ||
|
||
@BuiltinMethod(type = "Module_Not_In_Package_Error", name = "to_display_text") | ||
public class ModuleNotInPackageErrorToDisplayTextNode extends Node { | ||
|
||
Text execute(Object _this) { | ||
return Text.create("Module is not a part of a package."); | ||
} | ||
} |
39 changes: 39 additions & 0 deletions
39
...rpreter/node/expression/builtin/error/displaytext/NoSuchMethodErrorToDisplayTextNode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
package org.enso.interpreter.node.expression.builtin.error.displaytext; | ||
|
||
import com.oracle.truffle.api.dsl.Cached; | ||
import com.oracle.truffle.api.dsl.Specialization; | ||
import com.oracle.truffle.api.nodes.Node; | ||
import com.oracle.truffle.api.nodes.UnexpectedResultException; | ||
import org.enso.interpreter.dsl.BuiltinMethod; | ||
import org.enso.interpreter.node.expression.builtin.text.util.TypeToDisplayTextNode; | ||
import org.enso.interpreter.runtime.callable.atom.Atom; | ||
import org.enso.interpreter.runtime.callable.atom.AtomConstructor; | ||
import org.enso.interpreter.runtime.data.text.Text; | ||
import org.enso.interpreter.runtime.type.TypesGen; | ||
|
||
@BuiltinMethod(type = "No_Such_Method_Error", name = "to_display_text") | ||
public abstract class NoSuchMethodErrorToDisplayTextNode extends Node { | ||
static NoSuchMethodErrorToDisplayTextNode build() { | ||
return NoSuchMethodErrorToDisplayTextNodeGen.create(); | ||
} | ||
|
||
abstract Text execute(Object _this); | ||
|
||
@Specialization | ||
Text doAtom(Atom _this, @Cached TypeToDisplayTextNode displayTypeNode) { | ||
try { | ||
return Text.create("Method `") | ||
.add(TypesGen.expectUnresolvedSymbol(_this.getFields()[1]).getName()) | ||
.add("` of ") | ||
.add(displayTypeNode.execute(_this.getFields()[0])) | ||
.add(" could not be found."); | ||
} catch (UnexpectedResultException e) { | ||
return Text.create("Method could not be found."); | ||
} | ||
} | ||
|
||
@Specialization | ||
Text doConstructor(AtomConstructor _this) { | ||
return Text.create("Method could not be found."); | ||
} | ||
} |
32 changes: 32 additions & 0 deletions
32
...rpreter/node/expression/builtin/error/displaytext/NotInvokableErrorToDisplayTextNode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
package org.enso.interpreter.node.expression.builtin.error.displaytext; | ||
|
||
import com.oracle.truffle.api.dsl.Cached; | ||
import com.oracle.truffle.api.dsl.Specialization; | ||
import com.oracle.truffle.api.nodes.Node; | ||
import com.oracle.truffle.api.nodes.UnexpectedResultException; | ||
import org.enso.interpreter.dsl.BuiltinMethod; | ||
import org.enso.interpreter.node.expression.builtin.text.util.TypeToDisplayTextNode; | ||
import org.enso.interpreter.runtime.callable.atom.Atom; | ||
import org.enso.interpreter.runtime.callable.atom.AtomConstructor; | ||
import org.enso.interpreter.runtime.data.text.Text; | ||
import org.enso.interpreter.runtime.type.TypesGen; | ||
|
||
@BuiltinMethod(type = "Not_Invokable_Error", name = "to_display_text") | ||
public abstract class NotInvokableErrorToDisplayTextNode extends Node { | ||
static NotInvokableErrorToDisplayTextNode build() { | ||
return NotInvokableErrorToDisplayTextNodeGen.create(); | ||
} | ||
|
||
abstract Text execute(Object _this); | ||
|
||
@Specialization | ||
Text doAtom(Atom _this, @Cached TypeToDisplayTextNode displayTypeNode) { | ||
return Text.create("Type error: expected a function, but got ") | ||
.add(displayTypeNode.execute(_this.getFields()[0])); | ||
} | ||
|
||
@Specialization | ||
Text doConstructor(AtomConstructor _this) { | ||
return Text.create("Type error."); | ||
} | ||
} |
49 changes: 49 additions & 0 deletions
49
...interpreter/node/expression/builtin/error/displaytext/PolyglotErrorToDisplayTextNode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
package org.enso.interpreter.node.expression.builtin.error.displaytext; | ||
|
||
import com.oracle.truffle.api.dsl.Cached; | ||
import com.oracle.truffle.api.dsl.Specialization; | ||
import com.oracle.truffle.api.interop.InteropLibrary; | ||
import com.oracle.truffle.api.interop.UnsupportedMessageException; | ||
import com.oracle.truffle.api.library.CachedLibrary; | ||
import com.oracle.truffle.api.nodes.Node; | ||
import com.oracle.truffle.api.nodes.UnexpectedResultException; | ||
import org.enso.interpreter.dsl.BuiltinMethod; | ||
import org.enso.interpreter.node.expression.builtin.text.util.TypeToDisplayTextNode; | ||
import org.enso.interpreter.runtime.callable.atom.Atom; | ||
import org.enso.interpreter.runtime.callable.atom.AtomConstructor; | ||
import org.enso.interpreter.runtime.data.text.Text; | ||
import org.enso.interpreter.runtime.type.TypesGen; | ||
|
||
@BuiltinMethod(type = "Polyglot_Error", name = "to_display_text") | ||
public abstract class PolyglotErrorToDisplayTextNode extends Node { | ||
static PolyglotErrorToDisplayTextNode build() { | ||
return PolyglotErrorToDisplayTextNodeGen.create(); | ||
} | ||
|
||
abstract Text execute(Object _this); | ||
|
||
@Specialization | ||
Text doAtom( | ||
Atom _this, | ||
@Cached TypeToDisplayTextNode displayTypeNode, | ||
@CachedLibrary(limit = "5") InteropLibrary exceptions, | ||
@CachedLibrary(limit = "5") InteropLibrary strings) { | ||
try { | ||
Object cause = _this.getFields()[0]; | ||
String rep; | ||
if (exceptions.hasExceptionMessage(cause)) { | ||
rep = strings.asString(exceptions.getExceptionCause(cause)); | ||
} else { | ||
rep = displayTypeNode.execute(cause); | ||
} | ||
return Text.create("Polyglot error: ").add(rep); | ||
} catch (UnsupportedMessageException e) { | ||
return Text.create("Polyglot error."); | ||
} | ||
} | ||
|
||
@Specialization | ||
Text doConstructor(AtomConstructor _this) { | ||
return Text.create("Polyglot error."); | ||
} | ||
} |
Oops, something went wrong.