Skip to content

Commit 58353bc

Browse files
committed
SyntaxErrorBuiltins: initialize internal attributes array using SyntaxError factory
1 parent 3881627 commit 58353bc

File tree

6 files changed

+26
-20
lines changed

6 files changed

+26
-20
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/Python3Core.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.IndentationError;
2929
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.TabError;
30+
import static com.oracle.graal.python.builtins.objects.exception.SyntaxErrorBuiltins.SYNTAX_ERROR_ATTR_FACTORY;
3031
import static com.oracle.graal.python.nodes.BuiltinNames.MODULES;
3132
import static com.oracle.graal.python.nodes.BuiltinNames.PRINT;
3233
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__PACKAGE__;
@@ -1095,10 +1096,13 @@ public final RuntimeException raiseInvalidSyntax(PythonParser.ErrorType type, No
10951096
break;
10961097
}
10971098
instance = factory().createBaseException(cls, message, arguments);
1099+
final Object[] excAttrs = SYNTAX_ERROR_ATTR_FACTORY.create();
10981100
SourceSection section = location.getSourceSection();
10991101
Source source = section.getSource();
11001102
String path = source.getPath();
1101-
final String filename = path != null ? path : source.getName() != null ? source.getName() : "<string>";
1103+
excAttrs[SyntaxErrorBuiltins.IDX_FILENAME] = (path != null) ? path : source.getName() != null ? source.getName() : "<string>";
1104+
excAttrs[SyntaxErrorBuiltins.IDX_LINENO] = section.getStartLine();
1105+
excAttrs[SyntaxErrorBuiltins.IDX_OFFSET] = section.getStartColumn();
11021106
String msg = "invalid syntax";
11031107
if (type == PythonParser.ErrorType.Print) {
11041108
CharSequence line = source.getCharacters(section.getStartLine());
@@ -1122,7 +1126,9 @@ public final RuntimeException raiseInvalidSyntax(PythonParser.ErrorType type, No
11221126
// Not very nice. This counts on the implementation in traceback.py where if the value of
11231127
// text attribute is NONE, then the line is not printed
11241128
final String text = section.isAvailable() ? source.getCharacters(section.getStartLine()).toString() : null;
1125-
instance.setExceptionAttributes(new Object[]{msg, filename, section.getStartLine(), section.getStartColumn(), text});
1129+
excAttrs[SyntaxErrorBuiltins.IDX_MSG] = msg;
1130+
excAttrs[SyntaxErrorBuiltins.IDX_TEXT] = text;
1131+
instance.setExceptionAttributes(excAttrs);
11261132
throw PException.fromObject(instance, location, PythonOptions.isPExceptionWithJavaStacktrace(getLanguage()));
11271133
}
11281134

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/exception/BaseExceptionAttrNode.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,14 @@
5656
public abstract class BaseExceptionAttrNode extends Node {
5757
public interface StorageFactory {
5858
Object[] create(Object[] args, PythonObjectFactory factory);
59+
60+
default Object[] create(Object[] args) {
61+
return create(args, null);
62+
}
63+
64+
default Object[] create() {
65+
return create(null);
66+
}
5967
}
6068

6169
public abstract Object execute(PBaseException self, Object value, int index, StorageFactory factory);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/exception/StopIterationBuiltins.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,7 @@
5959
@CoreFunctions(extendClasses = PythonBuiltinClassType.StopIteration)
6060
public final class StopIterationBuiltins extends PythonBuiltins {
6161

62-
public static final BaseExceptionAttrNode.StorageFactory STOP_ITERATION_ATTR_FACTORY = (args, factory) -> {
63-
return new Object[]{(args != null && args.length > 0) ? args[0] : PNone.NONE};
64-
};
62+
public static final BaseExceptionAttrNode.StorageFactory STOP_ITERATION_ATTR_FACTORY = (args, factory) -> new Object[]{(args != null && args.length > 0) ? args[0] : PNone.NONE};
6563

6664
@Override
6765
protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFactories() {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/exception/SyntaxErrorBuiltins.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -77,17 +77,15 @@
7777
@CoreFunctions(extendClasses = {PythonBuiltinClassType.SyntaxError, PythonBuiltinClassType.IndentationError, PythonBuiltinClassType.TabError})
7878
public final class SyntaxErrorBuiltins extends PythonBuiltins {
7979

80-
static final int IDX_MSG = 0;
81-
static final int IDX_FILENAME = 1;
82-
static final int IDX_LINENO = 2;
83-
static final int IDX_OFFSET = 3;
84-
static final int IDX_TEXT = 4;
85-
static final int IDX_PRINT_FILE_AND_LINE = 5;
80+
public static final int IDX_MSG = 0;
81+
public static final int IDX_FILENAME = 1;
82+
public static final int IDX_LINENO = 2;
83+
public static final int IDX_OFFSET = 3;
84+
public static final int IDX_TEXT = 4;
85+
public static final int IDX_PRINT_FILE_AND_LINE = 5;
8686
public static final int SYNTAX_ERR_NUM_ATTRS = IDX_PRINT_FILE_AND_LINE + 1;
8787

88-
public static final BaseExceptionAttrNode.StorageFactory SYNTAX_ERROR_ATTR_FACTORY = (args, factory) -> {
89-
return new Object[SYNTAX_ERR_NUM_ATTRS];
90-
};
88+
public static final BaseExceptionAttrNode.StorageFactory SYNTAX_ERROR_ATTR_FACTORY = (args, factory) -> new Object[SYNTAX_ERR_NUM_ATTRS];
9189

9290
@Override
9391
protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFactories() {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/exception/UnicodeErrorBuiltins.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,7 @@ public final class UnicodeErrorBuiltins extends PythonBuiltins {
7373
static final int IDX_REASON = 4;
7474
public static final int UNICODE_ERR_NUM_ATTRS = IDX_REASON + 1;
7575

76-
public static final BaseExceptionAttrNode.StorageFactory UNICODE_ERROR_ATTR_FACTORY = (args, factory) -> {
77-
return new Object[UNICODE_ERR_NUM_ATTRS];
78-
};
76+
public static final BaseExceptionAttrNode.StorageFactory UNICODE_ERROR_ATTR_FACTORY = (args, factory) -> new Object[UNICODE_ERR_NUM_ATTRS];
7977

8078
@Override
8179
protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFactories() {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/ssl/SSLErrorBuiltins.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,7 @@ public class SSLErrorBuiltins extends PythonBuiltins {
7979
static final int IDX_VERIFY_MESSAGE = IDX_WRITTEN + 4;
8080
static final int SSL_ERR_NUM_ATTRS = IDX_VERIFY_MESSAGE + 1;
8181

82-
public static final BaseExceptionAttrNode.StorageFactory SSL_ERROR_ATTR_FACTORY = (args, factory) -> {
83-
return new Object[SSL_ERR_NUM_ATTRS];
84-
};
82+
public static final BaseExceptionAttrNode.StorageFactory SSL_ERROR_ATTR_FACTORY = (args, factory) -> new Object[SSL_ERR_NUM_ATTRS];
8583

8684
@Override
8785
protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFactories() {

0 commit comments

Comments
 (0)