Project

General

Profile

Actions

Feature #11951

closed

`RubyVM::InstructionSequence.compile` should return the error message within the raised error

Added by sawa (Tsuyoshi Sawada) over 8 years ago. Updated about 8 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:72711]

Description

When RubyVM::InstructionSequence.compile raises a syntax error, it outputs the syntax error message to $stderr, and then raises a SyntaxError anyway, whose message is simply: "compile error".

I don't think this is useful. For example, if I want to analyze within Ruby code whether a certain string is syntactically correct Ruby code, I would have to reasign $stderr to something such as StringIO.new, run RubyVM::InstructionSequence.compile, rescue the syntax error, (but instead of reading the error message from the error), read the error message by doing $stderr.string. This is cumbersome.

On the other hand, there is eval, which also can raise a SyntaxError. But with eval, the error message comes out with the raised error, and is useful. I don't see any reason why RubyVM::InstructionSequence.compile should behave differently from eval with respect to returning the error message.

I request RubyVM::InstructionSequence.compile to return the error message as the message on the raised error rather than directly printing it to $stderr.


Related issues 1 (1 open0 closed)

Related to Ruby master - Feature #11868: Proposal for RubyVM::InstructionSequence.compile to return an object containing the syntax error information currently written to STDERROpenActions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0