Project

General

Profile

Actions

Feature #11460

closed

Unhelpful error message when naming a module with the same name as an existing class

Added by iMIchael (Michael Martinez) over 8 years ago. Updated over 4 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:<unknown>]

Description

Summary

The error message when naming a module with the same name as an existing class causes more trouble then it helps.

Steps to Reproduce

class X;end
module X;end
=> TypeError: X is not a module

Expected Results

Ruby has this very helpful and explicit error when reassigning a value to an existing constant.

A = 1
A = 2
warning: already initialized constant A
warning: previous definition of A was here

which makes me expect Ruby to keep track of names of global constants and prevent me from colliding names with helpful warnings. This warning however raises a "Type error" which is not very intuitive. When users think of type errors they think of things like "foo" * "foo" => TypeError: no implicit conversion of String into Integer.

Actual Results

Confusion about what the actual error is, especially for people learning Ruby.


Files

mod-reopen-error-message.patch (2.82 KB) mod-reopen-error-message.patch jeremyevans0 (Jeremy Evans), 07/03/2019 11:05 PM
0001-Show-the-previous-definition-location.patch (4.89 KB) 0001-Show-the-previous-definition-location.patch nobu (Nobuyoshi Nakada), 07/04/2019 08:22 AM
Actions

Also available in: Atom PDF

Like1
Like0Like0Like0Like0Like0Like0Like0Like0