Skip to content
  • Yusuke Endoh's avatar
    711c40eb
    Refactor parser_params by removing "in_main" flag · 711c40eb
    Yusuke Endoh authored
    The relation between parser_param#base_block and #in_main were very
    subtle.
    A main script (that is passed via a command line) was parsed under
    base_block = TOPLEVEL_BINDING and in_main = 1.
    A script loaded by Kernel#require was parsed under
    base_block = NULL and in_main = 0.
    If base_block is non-NULL and in_main == 0, it is parsed by Kernel#eval
    or family.
    
    However, we know that TOPLEVEL_BINDING has no local variables when a
    main script is parsed.  So, we don't have to parse a main script under
    base_block = TOPLEVEL_BINDING.
    
    Instead, this change parses a main script under base_block = 0.
    If base_block is non-NULL, it is parsed by Kernel#eval or family.
    By this simplication, "in_main" is no longer needed.
    711c40eb
    Refactor parser_params by removing "in_main" flag
    Yusuke Endoh authored
    The relation between parser_param#base_block and #in_main were very
    subtle.
    A main script (that is passed via a command line) was parsed under
    base_block = TOPLEVEL_BINDING and in_main = 1.
    A script loaded by Kernel#require was parsed under
    base_block = NULL and in_main = 0.
    If base_block is non-NULL and in_main == 0, it is parsed by Kernel#eval
    or family.
    
    However, we know that TOPLEVEL_BINDING has no local variables when a
    main script is parsed.  So, we don't have to parse a main script under
    base_block = TOPLEVEL_BINDING.
    
    Instead, this change parses a main script under base_block = 0.
    If base_block is non-NULL, it is parsed by Kernel#eval or family.
    By this simplication, "in_main" is no longer needed.
Loading