class Opal::Rewriters::JsReservedWords
def self.valid_ivar_name?(name)
def self.valid_ivar_name?(name) !(PROTO_SPECIAL_PROPS =~ name || PROTO_SPECIAL_METHODS =~ name) end
def self.valid_name?(name)
def self.valid_name?(name) BASIC_IDENTIFIER_RULES =~ name && !( ES51_RESERVED_WORD =~ name || ES3_RESERVED_WORD_EXCLUSIVE =~ name || IMMUTABLE_PROPS =~ name ) end
def fix_ivar_name(name)
def fix_ivar_name(name) self.class.valid_ivar_name?(name.to_s[1..-1]) ? name : "#{name}$".to_sym end
def fix_var_name(name)
def fix_var_name(name) self.class.valid_name?(name) ? name : "#{name}$".to_sym end
def on_argument(node)
def on_argument(node) node = super(node) name, value = *node fixed_name = fix_var_name(name) new_children = value ? [fixed_name, value] : [fixed_name] node.updated(nil, new_children, meta: { arg_name: name }) end
def on_ivar(node)
def on_ivar(node) name, _ = *node node = node.updated(nil, [fix_ivar_name(name)]) super(node) end
def on_ivasgn(node)
def on_ivasgn(node) name, value = *node node = if value node.updated(nil, [fix_ivar_name(name), value]) else node.updated(nil, [fix_ivar_name(name)]) end super(node) end
def on_lvar(node)
def on_lvar(node) name, _ = *node node = node.updated(nil, [fix_var_name(name)]) super(node) end
def on_lvasgn(node)
def on_lvasgn(node) name, value = *node node = if value node.updated(nil, [fix_var_name(name), value]) else node.updated(nil, [fix_var_name(name)]) end super(node) end
def on_restarg(node)
because they may have no name
Restarg and kwrestarg are special cases
def on_restarg(node) name, _ = *node if name node = node.updated(nil, [fix_var_name(name)], meta: { arg_name: name }) end node end