Skip to content

Commit

Permalink
fixup! Protect class_(getter|property)[?] using Crystal.once(&).
Browse files Browse the repository at this point in the history
  • Loading branch information
ysbaddaden committed Jan 28, 2025
1 parent 9f18308 commit c77343c
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 5 deletions.
6 changes: 5 additions & 1 deletion scripts/generate_object_properties.cr
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,11 @@ struct Generator
def def_class_getter(suffix = "")
<<-TEXT
{% if block %}
@@__{{var_name}}_flag : Int8 = 0_i8
{% if ::Crystal::Once::FlagT == Bool %}
@@__{{var_name}}_flag = false
{% else %}
@@__{{var_name}}_flag = ::Crystal::Once::State::Uninitialized
{% end %}
{% end %}
def self.{{var_name}}#{suffix} {% if type %} : {{type}} {% end %}
Expand Down
24 changes: 20 additions & 4 deletions src/object/properties.cr
Original file line number Diff line number Diff line change
Expand Up @@ -994,7 +994,11 @@ class Object
{% end %}

{% if block %}
@@__{{var_name}}_flag : Int8 = 0_i8
{% if ::Crystal::Once::FlagT == Bool %}
@@__{{var_name}}_flag = false
{% else %}
@@__{{var_name}}_flag = ::Crystal::Once::State::Uninitialized
{% end %}
{% end %}

def self.{{var_name}} {% if type %} : {{type}} {% end %}
Expand Down Expand Up @@ -1128,7 +1132,11 @@ class Object
{% end %}

{% if block %}
@@__{{var_name}}_flag : Int8 = 0_i8
{% if ::Crystal::Once::FlagT == Bool %}
@@__{{var_name}}_flag = false
{% else %}
@@__{{var_name}}_flag = ::Crystal::Once::State::Uninitialized
{% end %}
{% end %}

def self.{{var_name}}? {% if type %} : {{type}} {% end %}
Expand Down Expand Up @@ -1484,7 +1492,11 @@ class Object
{% end %}

{% if block %}
@@__{{var_name}}_flag : Int8 = 0_i8
{% if ::Crystal::Once::FlagT == Bool %}
@@__{{var_name}}_flag = false
{% else %}
@@__{{var_name}}_flag = ::Crystal::Once::State::Uninitialized
{% end %}
{% end %}

def self.{{var_name}} {% if type %} : {{type}} {% end %}
Expand Down Expand Up @@ -1633,7 +1645,11 @@ class Object
{% end %}

{% if block %}
@@__{{var_name}}_flag : Int8 = 0_i8
{% if ::Crystal::Once::FlagT == Bool %}
@@__{{var_name}}_flag = false
{% else %}
@@__{{var_name}}_flag = ::Crystal::Once::State::Uninitialized
{% end %}
{% end %}

def self.{{var_name}}? {% if type %} : {{type}} {% end %}
Expand Down

0 comments on commit c77343c

Please sign in to comment.