Project

General

Profile

Actions

Feature #11951

closed

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

Added by sawa (Tsuyoshi Sawada) almost 9 years ago. Updated over 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 #1

Updated by nobu (Nobuyoshi Nakada) almost 9 years ago

  • Is duplicate of Feature #11868: Proposal for RubyVM::InstructionSequence.compile to return an object containing the syntax error information currently written to STDERR added
Actions #2

Updated by nobu (Nobuyoshi Nakada) over 8 years ago

  • Is duplicate of deleted (Feature #11868: Proposal for RubyVM::InstructionSequence.compile to return an object containing the syntax error information currently written to STDERR)
Actions #3

Updated by nobu (Nobuyoshi Nakada) over 8 years ago

  • Related to Feature #11868: Proposal for RubyVM::InstructionSequence.compile to return an object containing the syntax error information currently written to STDERR added
Actions #5

Updated by nobu (Nobuyoshi Nakada) over 8 years ago

  • Status changed from Open to Closed

Applied in changeset r54189.


SyntaxError message at iseq compile

  • iseq.c (rb_iseq_compile_with_option): make the parser in mild
    error.
  • load.c (rb_load_internal0): ditto.
  • parse.y (yycompile0): return the error message within the error
    to be raised. [Feature #11951]
  • parse.y (parser_compile_error): accumulate error messages in the
    error_buffer.
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0