[ruby-talk:02402] Re: Could missing 'end' be reported better?

From: mrilu <mrilu@...>
Date: 2000-04-08 16:29:55 UTC
List: ruby-talk #2402
On Sat, 8 Apr 2000, Yukihiro Matsumoto wrote:

> In message "[ruby-talk:02397] Could missing 'end' be reported better?"
>     on 00/04/08, mrilu <mrilu@ale.cx> writes:
> 
> |class Foo
> |  def bar
> |    p "missing end at next line"
> |#  end
> |  end
> |
> |  k = Foo.new()
> |  k.bar()
> |# causes 'sample.rb:9: parse error' here, how informative, isn't it?
> 
> # notice how indentation goes.
> 
> And this is a perfectly legal program, except that LAST `end' to the
> class clause is missing.  How can I find this error at proper place?

I see, and hopefully understand too :). But what I would like to see from
parser is exactly what you wrote:

sample.rb:9: parse error, 
    suspect: last `end' to the class 'Foo' clause is missing.

And this far I think you're able to twist parser easily, right?

> Using indentation information?

This would be superb but maybe it should be implemented only with some 
additional switch because I assume this kind of analysis will take some 
time at start-up :).

But seriously, using all possible means to detect errors like this would 
make me really happy,  but I'm afraid we have to generate 
additional Ruby-lint for development.

Maybe Ruby-lint would not be so bad idea after all. In above program it would
note inappropriate use of indentation (thus trace the source of the parse 
error). We could implement it and recommend (softly require) all RAA-programs
to pass cleanly. Or in worse case, require them to persuade their way by 
appropriately excusing (commenting) their ugliness.

In This Thread