Project

General

Profile

Actions

Bug #15891

closed

FrozenError when assigning frozen class to constant

Added by flori (Florian Frank) over 5 years ago. Updated over 5 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.7.0dev (2019-05-31 master 1457ad1ea7) [x86_64-darwin17]
[ruby-core:92911]

Description

This code used to work in Ruby 2.6 and before: C = Class.new.freeze. Now it raises a FrozenError for class and module instances, while other frozen things seem to still work.

I am not sure if this is a bug or an intentional change. A possible workaround is

C = Class.new
C.freeze

which works fine.


Related issues 1 (0 open1 closed)

Related to Ruby master - Feature #15765: [PATCH] Module#name without global constant searchClosedActions
Actions #1

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

  • Related to Feature #15765: [PATCH] Module#name without global constant search added
Actions #2

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

  • Backport changed from 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN to 2.4: DONTNEED, 2.5: DONTNEED, 2.6: DONTNEED
  • Description updated (diff)
Actions #3

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

  • Status changed from Open to Closed

Applied in changeset git|c1e52997870a63168835fde49562cb3c822c968a.


Fix FrozenError when assigning frozen class to constant

  • variable.c (set_namespace_path): modules/classes can get named
    by assignment to constant, even if frozen. [Bug #15891]
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0