Removed RuntimeExceptions and associated logic
This commit is contained in:
parent
1a25ddc35f
commit
bdcb2227c9
|
@ -15,8 +15,7 @@
|
|||
|
||||
<target name="compile">
|
||||
<mkdir dir="${classes.dir}" />
|
||||
<javac srcdir="${src.dir}"
|
||||
destdir="${classes.dir}"
|
||||
<javac srcdir="${src.dir}" destdir="${classes.dir}"
|
||||
includeantruntime="false" />
|
||||
</target>
|
||||
|
||||
|
|
|
@ -4,18 +4,6 @@ public abstract class LispException extends RuntimeException {
|
|||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final LispException convertToLispException(RuntimeException e) {
|
||||
return new LispException() {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return e.getMessage();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public int getSeverity() {
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package function.builtin;
|
||||
|
||||
import static error.LispException.convertToLispException;
|
||||
|
||||
import java.io.*;
|
||||
import java.text.MessageFormat;
|
||||
|
||||
|
@ -67,9 +65,6 @@ public class LOAD extends LispFunction {
|
|||
} catch (LispException e) {
|
||||
errorManager.generateError(e);
|
||||
return false;
|
||||
} catch (RuntimeException e) {
|
||||
errorManager.generateError(convertToLispException(e));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package interpreter;
|
||||
|
||||
import static error.LispException.convertToLispException;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
|
||||
import environment.RuntimeEnvironment;
|
||||
|
@ -44,9 +42,6 @@ public class LispInterpreter {
|
|||
} catch (LispException e) {
|
||||
erasePrompt();
|
||||
errorManager.generateError(e);
|
||||
} catch (RuntimeException e) {
|
||||
erasePrompt();
|
||||
errorManager.generateError(convertToLispException(e));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ package token;
|
|||
|
||||
import java.text.MessageFormat;
|
||||
|
||||
import error.LineColumnException;
|
||||
import error.*;
|
||||
import file.FilePosition;
|
||||
|
||||
public interface TokenFactory {
|
||||
|
@ -11,6 +11,25 @@ public interface TokenFactory {
|
|||
|
||||
Token createEOFToken(FilePosition position);
|
||||
|
||||
public static class EmptyTokenTextException extends LineColumnException {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public EmptyTokenTextException(FilePosition position) {
|
||||
super(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSeverity() {
|
||||
return ErrorManager.CRITICAL_LEVEL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessagePrefix() {
|
||||
return "empty token";
|
||||
}
|
||||
}
|
||||
|
||||
public static class BadCharacterException extends LineColumnException {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
@ -8,6 +8,9 @@ import util.Characters;
|
|||
public class TokenFactoryImpl implements TokenFactory {
|
||||
|
||||
public Token createToken(String text, FilePosition position) {
|
||||
if (text.length() == 0)
|
||||
throw new EmptyTokenTextException(position);
|
||||
|
||||
char firstCharacter = text.charAt(0);
|
||||
|
||||
switch (firstCharacter) {
|
||||
|
|
|
@ -5,6 +5,7 @@ import static testutil.TestUtilities.*;
|
|||
import org.junit.Test;
|
||||
|
||||
import function.ArgumentValidator.*;
|
||||
import function.builtin.EVAL.UndefinedFunctionException;
|
||||
import sexpression.Cons;
|
||||
|
||||
public class APPLYTester {
|
||||
|
@ -38,7 +39,7 @@ public class APPLYTester {
|
|||
assertSExpressionsMatch(parseString("35"), APPLY.apply(parsedArgumentList));
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
@Test(expected = UndefinedFunctionException.class)
|
||||
public void testApplyWithUndefinedFunction() {
|
||||
evaluateString("(apply 'f '(1 2 3))");
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ public class SYMBOL_FUNCTIONTester {
|
|||
assertEquals("(Y (N M) (+ N M))", evaluateString(input).toString());
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
@Test(expected = UndefinedSymbolFunctionException.class)
|
||||
public void testSymbolFunction_NonFunction() {
|
||||
String input = "(symbol-function 'a)";
|
||||
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
package token;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import org.junit.*;
|
||||
|
||||
import error.ErrorManager;
|
||||
import file.FilePosition;
|
||||
import token.TokenFactory.BadCharacterException;
|
||||
import token.TokenFactory.*;
|
||||
|
||||
public class TokenFactoryTester {
|
||||
|
||||
|
@ -29,12 +30,6 @@ public class TokenFactoryTester {
|
|||
assertTrue(tokenFactory.createEOFToken(testPosition) instanceof Eof);
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
public void testEmptyString_ThrowsException() {
|
||||
String text = "";
|
||||
createToken(text);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLeftParenthesisCreation() {
|
||||
String text = "(";
|
||||
|
@ -71,10 +66,34 @@ public class TokenFactoryTester {
|
|||
assertTrue(createToken(text) instanceof QuotedString);
|
||||
}
|
||||
|
||||
@Test(expected = EmptyTokenTextException.class)
|
||||
public void testEmptyString_ThrowsException() {
|
||||
createToken("");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void EmptyTokenTextException_ContainsCorrectSeverity() {
|
||||
try {
|
||||
createToken("");
|
||||
} catch (EmptyTokenTextException e) {
|
||||
assertTrue(e.getSeverity() == ErrorManager.CRITICAL_LEVEL);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void EmptyTokenTextException_ContainsMessage() {
|
||||
try {
|
||||
createToken("");
|
||||
} catch (EmptyTokenTextException e) {
|
||||
String message = e.getMessage();
|
||||
assertNotNull(message);
|
||||
assertTrue(message.length() > 0);
|
||||
}
|
||||
}
|
||||
|
||||
@Test(expected = BadCharacterException.class)
|
||||
public void testBadCharacter() {
|
||||
String text = "[abc]";
|
||||
tokenFactory.createToken(text, testPosition);
|
||||
public void testBadCharacter_ThrowsException() {
|
||||
createToken("[abc]");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue