Remove :origin option from memoization identifier
authorWincent Colaiuta <win@wincent.com>
Fri, 27 Aug 2010 21:37:40 +0000 (23:37 +0200)
committerWincent Colaiuta <win@wincent.com>
Fri, 27 Aug 2010 21:37:40 +0000 (23:37 +0200)
This was a Walrus-specific option so really has no place in Walrat
itself, and it turns out that it isn't necessary anyway and so only is a
waste of memory.

The motivation for adding it to the memoization identifier was so as to
distinguish between parse results with the same parseable at the same
location but in different files (for example, a comment directive
parslet seeing a comment on the first line of a file and also on the
first line of a file included from the former).

It turns out that this kind of differentiation is never needed because
include files are parsed by a completely separate Parser instance, and
each instance has its own MemoizingCache instance. See the
Walrus::Grammar :include_subparslet rule, and particularly this line:

  sub_result = Parser.new.parse(...)

Signed-off-by: Wincent Colaiuta <win@wincent.com>
lib/walrat/memoizing_cache.rb

index 7e371309c429990eaf7ed3ec09ad2dfd1930f63a..cd6709e244aba8aec36f915ae396e2ceda46dd7d 100755 (executable)
@@ -74,10 +74,6 @@ module Walrat
 
       # construct a unique identifier
       identifier = [options[:parseable], options[:line_start], options[:column_start]]
-
-      # BUG: the :origin key here is specific to Walrus (doesn't appear anywhere else
-      # in Walrat codebase)
-      identifier << options[:origin] if options.has_key? :origin
       identifier << options[:skipping_override] if options.has_key? :skipping_override
 
       if (result = @cache[identifier]) != NoValueForKey.instance