Skip to content

Commit 3a91179

Browse files
committed
Remove weird error message hack in descriptor delete node
1 parent 243c3f3 commit 3a91179

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/io/TextIOWrapperBuiltins.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
*/
4141
package com.oracle.graal.python.builtins.modules.io;
4242

43+
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.AttributeError;
4344
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.IOUnsupportedOperation;
4445
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.PTextIOWrapper;
4546
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.RuntimeError;
@@ -94,6 +95,7 @@
9495
import static com.oracle.graal.python.builtins.modules.io.TextIOWrapperNodes.setNewline;
9596
import static com.oracle.graal.python.builtins.modules.io.TextIOWrapperNodes.validateNewline;
9697
import static com.oracle.graal.python.nodes.ErrorMessages.A_STRICTLY_POSITIVE_INTEGER_IS_REQUIRED;
98+
import static com.oracle.graal.python.nodes.ErrorMessages.CANNOT_DELETE;
9799
import static com.oracle.graal.python.nodes.ErrorMessages.CAN_T_DO_NONZERO_CUR_RELATIVE_SEEKS;
98100
import static com.oracle.graal.python.nodes.ErrorMessages.CAN_T_DO_NONZERO_END_RELATIVE_SEEKS;
99101
import static com.oracle.graal.python.nodes.ErrorMessages.CAN_T_RECONSTRUCT_LOGICAL_FILE_POSITION;
@@ -136,6 +138,7 @@
136138
import com.oracle.graal.python.builtins.objects.buffer.PythonBufferAccessLibrary;
137139
import com.oracle.graal.python.builtins.objects.bytes.PBytes;
138140
import com.oracle.graal.python.builtins.objects.common.SequenceNodes;
141+
import com.oracle.graal.python.builtins.objects.getsetdescriptor.DescriptorDeleteMarker;
139142
import com.oracle.graal.python.builtins.objects.ints.PInt;
140143
import com.oracle.graal.python.builtins.objects.str.StringNodes.StringReplaceNode;
141144
import com.oracle.graal.python.builtins.objects.str.StringUtils.SimpleTruffleStringFormatNode;
@@ -1157,7 +1160,7 @@ static TruffleString doit(PTextIO self) {
11571160
}
11581161
}
11591162

1160-
@Builtin(name = J__CHUNK_SIZE, minNumOfPositionalArgs = 1, maxNumOfPositionalArgs = 2, isGetter = true, isSetter = true)
1163+
@Builtin(name = J__CHUNK_SIZE, minNumOfPositionalArgs = 1, maxNumOfPositionalArgs = 2, isGetter = true, isSetter = true, allowsDelete = true)
11611164
@GenerateNodeFactory
11621165
abstract static class ChunkSizeNode extends PythonBuiltinNode {
11631166

@@ -1166,7 +1169,7 @@ static Object none(PTextIO self, @SuppressWarnings("unused") PNone none) {
11661169
return self.getChunkSize();
11671170
}
11681171

1169-
@Specialization(guards = {"self.isOK()", "!self.isDetached()", "!isNoValue(arg)"})
1172+
@Specialization(guards = {"self.isOK()", "!self.isDetached()", "!isNoValue(arg)", "!isDeleteMarker(arg)"})
11701173
static Object chunkSize(VirtualFrame frame, PTextIO self, Object arg,
11711174
@Bind("this") Node inliningTarget,
11721175
@Cached PyNumberAsSizeNode asSizeNode,
@@ -1179,6 +1182,12 @@ static Object chunkSize(VirtualFrame frame, PTextIO self, Object arg,
11791182
return 0;
11801183
}
11811184

1185+
@Specialization(guards = {"self.isOK()", "!self.isDetached()"})
1186+
static Object noDelete(@SuppressWarnings("unused") PTextIO self, @SuppressWarnings("unused") DescriptorDeleteMarker marker,
1187+
@Shared @Cached PRaiseNode raiseNode) {
1188+
throw raiseNode.raise(AttributeError, CANNOT_DELETE);
1189+
}
1190+
11821191
@Specialization(guards = "!self.isOK()")
11831192
static Object initError(@SuppressWarnings("unused") PTextIO self, @SuppressWarnings("unused") Object arg,
11841193
@Shared @Cached PRaiseNode raiseNode) {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/getsetdescriptor/DescriptorBuiltins.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,10 @@
4040
*/
4141
package com.oracle.graal.python.builtins.objects.getsetdescriptor;
4242

43-
import static com.oracle.graal.python.builtins.modules.io.IONodes.T__CHUNK_SIZE;
4443
import static com.oracle.graal.python.nodes.SpecialAttributeNames.J___NAME__;
4544
import static com.oracle.graal.python.nodes.SpecialAttributeNames.J___QUALNAME__;
4645
import static com.oracle.graal.python.runtime.exception.PythonErrorType.AttributeError;
4746
import static com.oracle.graal.python.runtime.exception.PythonErrorType.TypeError;
48-
import static com.oracle.graal.python.util.PythonUtils.TS_ENCODING;
4947

5048
import java.util.List;
5149

@@ -226,11 +224,6 @@ Object doGetSetDescriptor(VirtualFrame frame, GetSetDescriptor descr, Object obj
226224
} else {
227225
branchProfile.enter(inliningTarget);
228226
if (descr.getSet() != null) {
229-
if (descr.getName().equalsUncached(T__CHUNK_SIZE, TS_ENCODING)) {
230-
// This is a special error message case. see
231-
// Modules/_io/textio.c:textiowrapper_chunk_size_set
232-
throw raiseNode.get(inliningTarget).raise(AttributeError, ErrorMessages.CANNOT_DELETE);
233-
}
234227
throw raiseNode.get(inliningTarget).raise(TypeError, ErrorMessages.CANNOT_DELETE_ATTRIBUTE, getNameNode.execute(inliningTarget, descr.getType()), descr.getName());
235228
} else {
236229
throw raiseNode.get(inliningTarget).raise(AttributeError, ErrorMessages.ATTRIBUTE_S_OF_P_OBJECTS_IS_NOT_WRITABLE, descr.getName(), obj);

0 commit comments

Comments
 (0)