rdl 2.0.0.rc2 → 2.0.0.rc3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +7 -1
  3. data/README.md +94 -20
  4. data/lib/rdl.rb +4 -1
  5. data/lib/rdl/config.rb +90 -3
  6. data/lib/rdl/info.rb +16 -0
  7. data/lib/rdl/typecheck.rb +207 -79
  8. data/lib/rdl/types/bot.rb +1 -1
  9. data/lib/rdl/types/dependent_arg.rb +17 -8
  10. data/lib/rdl/types/{finitehash.rb → finite_hash.rb} +3 -29
  11. data/lib/rdl/types/generic.rb +1 -37
  12. data/lib/rdl/types/intersection.rb +1 -0
  13. data/lib/rdl/types/lexer.rex +2 -1
  14. data/lib/rdl/types/lexer.rex.rb +4 -1
  15. data/lib/rdl/types/method.rb +2 -12
  16. data/lib/rdl/types/nominal.rb +1 -22
  17. data/lib/rdl/types/non_null.rb +50 -0
  18. data/lib/rdl/types/parser.racc +3 -1
  19. data/lib/rdl/types/parser.tab.rb +222 -190
  20. data/lib/rdl/types/singleton.rb +1 -6
  21. data/lib/rdl/types/structural.rb +1 -10
  22. data/lib/rdl/types/top.rb +1 -2
  23. data/lib/rdl/types/tuple.rb +3 -19
  24. data/lib/rdl/types/type.rb +223 -0
  25. data/lib/rdl/types/union.rb +12 -2
  26. data/lib/rdl/types/var.rb +4 -1
  27. data/lib/rdl/types/wild_query.rb +1 -0
  28. data/lib/rdl/wrap.rb +199 -169
  29. data/lib/rdl_disable.rb +41 -0
  30. data/lib/rdl_types.rb +1 -4
  31. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/_aliases.rb +0 -0
  32. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/abbrev.rb +0 -0
  33. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/array.rb +56 -56
  34. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/base64.rb +0 -0
  35. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/basic_object.rb +0 -0
  36. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/benchmark.rb +0 -0
  37. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/bigdecimal.rb +0 -0
  38. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/bigmath.rb +0 -0
  39. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/bignum.rb +0 -0
  40. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/class.rb +0 -0
  41. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/complex.rb +0 -0
  42. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/coverage.rb +0 -0
  43. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/csv.rb +0 -0
  44. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/date.rb +0 -0
  45. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/dir.rb +0 -0
  46. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/encoding.rb +0 -0
  47. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/enumerable.rb +0 -0
  48. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/enumerator.rb +0 -0
  49. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/exception.rb +0 -0
  50. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/file.rb +0 -0
  51. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/fileutils.rb +0 -0
  52. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/fixnum.rb +0 -0
  53. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/float.rb +26 -26
  54. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/gem.rb +0 -0
  55. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/hash.rb +0 -0
  56. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/integer.rb +8 -8
  57. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/io.rb +0 -0
  58. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/kernel.rb +12 -11
  59. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/marshal.rb +0 -0
  60. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/matchdata.rb +0 -0
  61. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/math.rb +0 -0
  62. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/module.rb +0 -0
  63. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/nil.rb +0 -0
  64. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/numeric.rb +0 -0
  65. data/lib/types/core-ruby-2.x/object.rb +75 -0
  66. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/pathname.rb +0 -0
  67. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/process.rb +0 -0
  68. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/random.rb +0 -0
  69. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/range.rb +0 -0
  70. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/rational.rb +0 -0
  71. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/regexp.rb +0 -0
  72. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/set.rb +0 -0
  73. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/string.rb +0 -0
  74. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/strscan.rb +0 -0
  75. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/symbol.rb +0 -0
  76. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/time.rb +0 -0
  77. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/uri.rb +0 -0
  78. data/{types/ruby-2.x → lib/types/core-ruby-2.x}/yaml.rb +0 -0
  79. data/lib/types/core.rb +4 -0
  80. data/rdl.gemspec +2 -2
  81. data/test/test_le.rb +77 -35
  82. data/test/test_parser.rb +75 -59
  83. data/test/test_rdl.rb +18 -0
  84. data/test/test_typecheck.rb +73 -4
  85. metadata +54 -57
  86. data/lib/rails_types.rb +0 -1
  87. data/types/rails-4.2.1/fixnum.rb +0 -3
  88. data/types/rails-4.2.1/string.rb +0 -3
  89. data/types/rails-tmp/action_dispatch.rb +0 -406
  90. data/types/rails-tmp/active_record.rb +0 -406
  91. data/types/rails-tmp/devise_contracts.rb +0 -216
  92. data/types/ruby-2.x/object.rb +0 -73
@@ -33,7 +33,7 @@ module RDL::Type
33
33
  end
34
34
 
35
35
  def <=(other)
36
- true
36
+ return Type.leq(self, other)
37
37
  end
38
38
 
39
39
  def member?(obj, *args)
@@ -6,15 +6,12 @@ module RDL::Type
6
6
  attr_reader :type
7
7
  attr_reader :predicate
8
8
 
9
- # Note: Named argument types aren't hashconsed.
10
-
11
9
  def initialize(name, type, predicate)
12
10
  @name = name
13
11
  @type = type
14
- /\{\{(.+)\}\}/ =~ predicate
15
- @predicate = $1
12
+ @predicate = predicate
16
13
  raise RuntimeError, "Attempt to create annotated type with non-type" unless type.is_a? Type
17
- raise RuntimeError, "Attempt to create doubly annotated type" if (type.is_a? AnnotatedArgType)||(type.is_a? DependentArgType)
14
+ raise RuntimeError, "Attempt to create doubly annotated type" if (type.is_a? AnnotatedArgType) || (type.is_a? DependentArgType)
18
15
  super()
19
16
  end
20
17
 
@@ -30,18 +27,30 @@ module RDL::Type
30
27
 
31
28
  alias eql? ==
32
29
 
33
- # doesn't have a match method - queries shouldn't have annotations in them
30
+ # match on the base type, ignoring refinement
31
+ def match(other)
32
+ return @type.match(other)
33
+ end
34
34
 
35
35
  def hash # :nodoc:
36
36
  return (57 + @name.hash) * @type.hash
37
37
  end
38
38
 
39
+ # ignore refinement in comparison for now
40
+ def <=(other)
41
+ return @type <= other
42
+ end
43
+
44
+ def leq_inst(other, inst=nil, ileft=true)
45
+ return @type.leq_inst(other, inst, ileft)
46
+ end
47
+
39
48
  def member?(obj, *args)
40
- @type.member?(obj, *args)
49
+ return @type.member?(obj, *args)
41
50
  end
42
51
 
43
52
  def instantiate(inst)
44
- return DependentArgType.new(@name, @type.instantiate(inst),@predicate)
53
+ return DependentArgType.new(@name, @type.instantiate(inst), @predicate)
45
54
  end
46
55
  end
47
56
  end
@@ -7,8 +7,8 @@ module RDL::Type
7
7
  class FiniteHashType < Type
8
8
  attr_reader :elts
9
9
  attr_reader :the_hash # either nil or hash type if self has been promoted to hash
10
- attr_reader :ubounds # upper bounds this tuple has been compared with using <=
11
- attr_reader :lbounds # lower bounds...
10
+ attr_accessor :ubounds # upper bounds this tuple has been compared with using <=
11
+ attr_accessor :lbounds # lower bounds...
12
12
 
13
13
  # [+elts+] is a map from keys to types
14
14
  def initialize(elts)
@@ -65,33 +65,7 @@ module RDL::Type
65
65
  end
66
66
 
67
67
  def <=(other)
68
- return @the_hash <= other if @the_hash
69
- other = other.canonical
70
- return true if other.instance_of? TopType
71
- other = other.the_hash if other.instance_of?(FiniteHashType) && other.the_hash
72
- if other.instance_of? FiniteHashType
73
- # Like Tuples, FiniteHashes are immutable, so covariant subtyping allowed
74
- # But note, no width subtyping allowed, to match #member?
75
- rest = other.elts.clone # shallow copy
76
- @elts.each_pair { |k, tleft|
77
- return false unless rest.has_key? k
78
- tright = rest[k]
79
- tleft = tleft.type if tleft.instance_of? OptionalType
80
- tright = tright.type if tright.instance_of? OptionalType
81
- return false unless tleft <= tright
82
- rest.delete k
83
- }
84
- rest.each_pair { |k, tright|
85
- return false unless tright.instance_of? OptionalType
86
- }
87
- ubounds << other
88
- other.lbounds << self
89
- return true
90
- elsif (other.instance_of? GenericType) && (other.base == $__rdl_hash_type)
91
- r = promote!
92
- return (self <= other) && r
93
- end
94
- return false
68
+ return Type.leq(self, other)
95
69
  end
96
70
 
97
71
  def member?(obj, *args)
@@ -35,43 +35,7 @@ module RDL::Type
35
35
  end
36
36
 
37
37
  def <=(other)
38
- other = other.canonical
39
- formals, variance, _ = $__rdl_type_params[base.name]
40
- # do check here to avoid hiding errors if generic type written
41
- # with wrong number of parameters but never checked against
42
- # instantiated instances
43
- raise TypeError, "No type parameters defined for #{base.name}" unless formals
44
- return true if other.instance_of? TopType
45
- # return (@base <= other) if other.instance_of?(NominalType) # raw subtyping not allowed
46
- if other.instance_of? GenericType
47
- return false unless @base == other.base
48
- return variance.zip(params, other.params).all? { |v, self_t, other_t|
49
- case v
50
- when :+
51
- self_t <= other_t
52
- when :-
53
- other_t <= self_t
54
- when :~
55
- self_t == other_t
56
- else
57
- raise RuntimeError, "Unexpected variance #{v}" # shouldn't happen
58
- end
59
- }
60
- end
61
- if other.instance_of? StructuralType
62
- # similar logic in NominalType
63
- inst = Hash[*formals.zip(params).flatten]
64
- k = base.klass
65
- other.methods.each_pair { |m, t|
66
- return false unless k.method_defined? m
67
- types = $__rdl_info.get(k, m, :type)
68
- if types
69
- return false unless types.all? { |t_self| t_self.instantiate(inst) <= t }
70
- end
71
- }
72
- return true
73
- end
74
- return false
38
+ return Type.leq(self, other)
75
39
  end
76
40
 
77
41
  def member?(obj, *args)
@@ -45,6 +45,7 @@ module RDL::Type
45
45
 
46
46
  def ==(other) # :nodoc:
47
47
  return false if other.nil?
48
+ other = other.type if other.is_a? DependentArgType
48
49
  other = other.canonical
49
50
  return (other.instance_of? IntersectionType) && (other.types == @types)
50
51
  end
@@ -17,7 +17,7 @@ rule
17
17
  => { [:RASSOC, text] }
18
18
  \( { [:LPAREN, text] }
19
19
  \) { [:RPAREN, text] }
20
- {PREDICATE} { [:PREDICATE, text] }
20
+ {PREDICATE} { [:PREDICATE, text[2..-3]] }
21
21
  \{ { [:LBRACE, text] }
22
22
  \} { [:RBRACE, text] }
23
23
  \[ { [:LBRACKET, text] }
@@ -26,6 +26,7 @@ rule
26
26
  > { [:GREATER, text] }
27
27
  , { [:COMMA, text] }
28
28
  \? { [:QUERY, text] }
29
+ \! { [:BANG, text] }
29
30
  \* { [:STAR, text] }
30
31
  \#T { [:HASH_TYPE, text] }
31
32
  \#Q { [:HASH_QUERY, text] }
@@ -77,7 +77,7 @@ class Parser < Racc::Parser
77
77
  action { [:RPAREN, text] }
78
78
 
79
79
  when (text = @ss.scan(/\{\{(?:(?!}}).)+\}\}/))
80
- action { [:PREDICATE, text] }
80
+ action { [:PREDICATE, text[2..-3]] }
81
81
 
82
82
  when (text = @ss.scan(/\{/))
83
83
  action { [:LBRACE, text] }
@@ -103,6 +103,9 @@ class Parser < Racc::Parser
103
103
  when (text = @ss.scan(/\?/))
104
104
  action { [:QUERY, text] }
105
105
 
106
+ when (text = @ss.scan(/\!/))
107
+ action { [:BANG, text] }
108
+
106
109
  when (text = @ss.scan(/\*/))
107
110
  action { [:STAR, text] }
108
111
 
@@ -129,7 +129,7 @@ module RDL::Type
129
129
  end
130
130
 
131
131
  def check_arg_preds(bind, preds)
132
- preds.each_with_index { |p,i|
132
+ preds.each_with_index { |p, i|
133
133
  if !eval(p.predicate, bind) then
134
134
  raise TypeError, <<RUBY
135
135
  Argument does not match type predicate.
@@ -265,17 +265,7 @@ RUBY
265
265
  end
266
266
 
267
267
  def <=(other)
268
- return false unless other.instance_of? MethodType # only comparable to method types
269
- return false unless other.args.size == @args.size
270
- return false unless @args.zip(other.args).all? { |left, right| right <= left } # contravariance
271
- return false unless @ret <= other.ret # covariance
272
- if @block && other.block
273
- return (other.block <= @block) # contravariance
274
- elsif @block.nil? && other.block.nil?
275
- return true
276
- else
277
- return false # one has a block and the other doesn't
278
- end
268
+ return Type.leq(self, other)
279
269
  end
280
270
 
281
271
  def instantiate(inst)
@@ -49,28 +49,7 @@ module RDL::Type
49
49
  end
50
50
 
51
51
  def <=(other)
52
- other = other.canonical
53
- k = klass
54
- if other.instance_of? TopType
55
- return true
56
- elsif other.instance_of? NominalType
57
- return k.ancestors.member?(other.klass)
58
- # return self <= other.base if other.instance_of? GenericType # raw subtyping not allowed
59
- elsif other.instance_of? StructuralType
60
- # similar logic in GenericType
61
- other.methods.each_pair { |m, t|
62
- return false unless k.method_defined? m
63
- types = $__rdl_info.get(k, m, :type)
64
- if types
65
- return false unless types.all? { |t_self| t_self <= t }
66
- end
67
- }
68
- return true
69
- elsif other.instance_of? UnionType
70
- return other.types.any? { |ot| self <= ot }
71
- else
72
- return false
73
- end
52
+ return Type.leq(self, other)
74
53
  end
75
54
 
76
55
  def member?(obj, *args)
@@ -0,0 +1,50 @@
1
+ require_relative 'type'
2
+
3
+ module RDL::Type
4
+ class NonNullType < Type
5
+ attr_reader :type
6
+
7
+ def initialize(type)
8
+ @type = type
9
+ raise RuntimeError, "Singleton types are always non-null" if type.is_a? SingletonType
10
+ raise RuntimeError, "Attempt to create doubly non-null type" if type.is_a? NonNullType
11
+ super()
12
+ end
13
+
14
+ def to_s
15
+ return "!#{@type.to_s}"
16
+ end
17
+
18
+ def ==(other) # :nodoc:
19
+ return false if other.nil?
20
+ other = other.canonical
21
+ return (other.instance_of? NonNullType) && (other.type == @type)
22
+ end
23
+
24
+ alias eql? ==
25
+
26
+ def match(other)
27
+ other = other.canonical
28
+ other = other.type if other.instance_of? AnnotatedArgType
29
+ return true if other.instance_of? WildQuery
30
+ return (other.instance_of? NonNullType) && (@type.match(other.type))
31
+ end
32
+
33
+ def hash # :nodoc:
34
+ return 157 + @type.hash
35
+ end
36
+
37
+ def <=(other)
38
+ return Type.leq(self, other)
39
+ end
40
+
41
+ def member?(obj, *args)
42
+ return false if obj.nil?
43
+ @type.member?(obj, *args)
44
+ end
45
+
46
+ def instantiate(inst)
47
+ return NonNullType.new(@type.instantiate(inst))
48
+ end
49
+ end
50
+ end
@@ -10,7 +10,7 @@ class Parser
10
10
  token HASH_TYPE HASH_QUERY CONST_BEGIN RASSOC
11
11
  token OR FIXNUM FLOAT COLON RARROW DOT DOTS ID SYMBOL SPECIAL_ID STRING PREDICATE
12
12
  token LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET
13
- token COMMA QUERY STAR LESS GREATER
13
+ token COMMA QUERY BANG STAR LESS GREATER
14
14
  token EOF
15
15
 
16
16
  rule
@@ -100,6 +100,8 @@ rule
100
100
  union_type:
101
101
  single_type { result = val[0] }
102
102
  | single_type OR union_type { result = RDL::Type::UnionType.new val[0], val[2] }
103
+ | BANG single_type { result = RDL::Type::NonNullType.new val[1] }
104
+ | BANG single_type OR union_type { result = RDL::Type::UnionType.new(RDL::Type::NonNullType.new(val[1]), val[3]) }
103
105
 
104
106
  single_type:
105
107
  SYMBOL { result = RDL::Type::SingletonType.new(val[0].to_sym) }
@@ -11,7 +11,7 @@ module RDL::Type
11
11
 
12
12
  class Parser < Racc::Parser
13
13
 
14
- module_eval(<<'...end parser.racc/module_eval...', 'parser.racc', 157)
14
+ module_eval(<<'...end parser.racc/module_eval...', 'parser.racc', 159)
15
15
 
16
16
  def initialize()
17
17
  @yydebug = true
@@ -21,182 +21,198 @@ end
21
21
  ##### State transition tables begin ###
22
22
 
23
23
  racc_action_table = [
24
- 20, 70, 18, 19, 73, 21, 28, 30, 13, 15,
25
- 5, 6, 11, 74, 16, 57, 17, 37, 31, 32,
26
- 20, 76, 18, 19, 7, 21, 28, 30, 13, 15,
27
- 79, 37, 11, 38, 16, 84, 17, 87, 31, 32,
28
- 20, 7, 18, 19, 92, 21, 7, 14, 13, 15,
29
- 95, 96, 11, 98, 16, 100, 17, 20, 82, 18,
30
- 19, 102, 21, 70, 47, 13, 15, 103, 8, 11,
31
- 7, 16, 34, 17, 51, 20, 36, 18, 19, 37,
32
- 21, 52, 14, 13, 15, 53, 54, 11, 55, 16,
33
- 20, 17, 18, 19, 56, 21, 60, 14, 13, 15,
34
- 20, 57, 18, 19, 16, 21, 17, 14, 13, 15,
35
- 63, 64, 11, 65, 16, 20, 17, 18, 19, 66,
36
- 21, 67, 14, 13, 15, 68, 69, 11, 71, 16,
37
- 20, 17, 18, 19, 72, 21, nil, 14, 13, 15,
38
- 20, nil, 18, 19, 16, 21, 17, 14, 13, 15,
39
- nil, nil, 11, nil, 16, 20, 17, 18, 19, nil,
40
- 21, nil, 14, 13, 15, nil, nil, 11, nil, 16,
41
- 20, 17, 18, 19, nil, 21, nil, 14, 13, 15,
42
- nil, nil, 11, nil, 16, 20, 17, 18, 19, nil,
43
- 21, nil, 14, 13, 15, nil, nil, 11, nil, 16,
44
- 20, 17, 18, 19, nil, 21, nil, 14, 13, 15,
45
- 20, nil, 18, 19, 16, 21, 17, 14, 13, 15,
46
- nil, nil, 11, nil, 16, 20, 17, 18, 19, nil,
47
- 21, nil, 14, 13, 15, 20, nil, 18, 19, 16,
48
- 21, 17, 14, 13, 15, 42, nil, 40, 41, 16,
49
- nil, 17, 38, nil, nil, 43, 42, 7, 40, 41,
50
- nil, nil, nil, 38, nil, nil, 43 ]
24
+ 21, 77, 19, 20, 79, 22, 29, 31, 14, 16,
25
+ 82, 40, 11, 88, 17, 59, 18, 73, 32, 13,
26
+ 33, 21, 91, 19, 20, 7, 22, 29, 31, 14,
27
+ 16, 96, 39, 11, 39, 17, 7, 18, 99, 32,
28
+ 13, 33, 21, 100, 19, 20, 102, 22, 104, 15,
29
+ 14, 16, 106, 5, 6, 73, 17, 21, 18, 19,
30
+ 20, 13, 22, 107, 15, 14, 16, 7, 8, 7,
31
+ 35, 17, 21, 18, 19, 20, 13, 22, 37, 15,
32
+ 14, 16, 39, 54, 55, 56, 17, 21, 18, 19,
33
+ 20, 13, 22, 57, 15, 14, 16, 58, 62, 11,
34
+ 64, 17, 21, 18, 19, 20, 13, 22, 59, 15,
35
+ 14, 16, 66, 67, 68, 69, 17, 21, 18, 19,
36
+ 20, 13, 22, 70, 15, 14, 16, 71, 72, 11,
37
+ 74, 17, 21, 18, 19, 20, 13, 22, 75, 15,
38
+ 14, 16, 76, nil, 11, nil, 17, nil, 18, nil,
39
+ 85, 13, 21, nil, 19, 20, nil, 22, nil, 15,
40
+ 14, 16, nil, nil, 11, nil, 17, 21, 18, 19,
41
+ 20, 13, 22, nil, 15, 14, 16, nil, nil, nil,
42
+ nil, 17, 21, 18, 19, 20, 13, 22, nil, 15,
43
+ 14, 16, nil, nil, 11, nil, 17, 21, 18, 19,
44
+ 20, 13, 22, nil, 15, 14, 16, nil, nil, 11,
45
+ nil, 17, 21, 18, 19, 20, 13, 22, nil, 15,
46
+ 14, 16, nil, nil, 11, nil, 17, 21, 18, 19,
47
+ 20, 13, 22, nil, 15, 14, 16, nil, nil, nil,
48
+ nil, 17, 21, 18, 19, 20, 13, 22, nil, 15,
49
+ 14, 16, nil, nil, 11, nil, 17, 21, 18, 19,
50
+ 20, 13, 22, nil, 15, 14, 16, nil, nil, 11,
51
+ nil, 17, 21, 18, 19, 20, 13, 22, nil, 49,
52
+ 14, 16, nil, nil, 11, nil, 17, nil, 18, 53,
53
+ 21, 13, 19, 20, nil, 22, nil, 15, 14, 16,
54
+ 44, nil, 42, 43, 17, nil, 18, 40, nil, nil,
55
+ 45, 44, 7, 42, 43, nil, nil, nil, 40, nil,
56
+ nil, 45 ]
51
57
 
52
58
  racc_action_check = [
53
- 7, 47, 7, 7, 50, 7, 7, 7, 7, 7,
54
- 0, 0, 7, 52, 7, 30, 7, 47, 7, 7,
55
- 54, 53, 54, 54, 0, 54, 54, 54, 54, 54,
56
- 55, 30, 54, 56, 54, 62, 54, 65, 54, 54,
57
- 57, 70, 57, 57, 75, 57, 76, 57, 57, 57,
58
- 87, 90, 57, 93, 57, 96, 57, 17, 57, 17,
59
- 17, 97, 17, 100, 17, 17, 17, 102, 1, 17,
60
- 6, 17, 8, 17, 17, 32, 12, 32, 32, 14,
61
- 32, 20, 32, 32, 32, 23, 26, 32, 27, 32,
62
- 66, 32, 66, 66, 29, 66, 35, 66, 66, 66,
63
- 11, 38, 11, 11, 66, 11, 66, 11, 11, 11,
64
- 40, 41, 11, 42, 11, 71, 11, 71, 71, 43,
65
- 71, 44, 71, 71, 71, 45, 46, 71, 48, 71,
66
- 36, 71, 36, 36, 49, 36, nil, 36, 36, 36,
67
- 82, nil, 82, 82, 36, 82, 36, 82, 82, 82,
68
- nil, nil, 82, nil, 82, 37, 82, 37, 37, nil,
69
- 37, nil, 37, 37, 37, nil, nil, 37, nil, 37,
70
- 92, 37, 92, 92, nil, 92, nil, 92, 92, 92,
71
- nil, nil, 92, nil, 92, 5, 92, 5, 5, nil,
72
- 5, nil, 5, 5, 5, nil, nil, 5, nil, 5,
73
- 95, 5, 95, 95, nil, 95, nil, 95, 95, 95,
74
- 31, nil, 31, 31, 95, 31, 95, 31, 31, 31,
75
- nil, nil, 31, nil, 31, 63, 31, 63, 63, nil,
76
- 63, nil, 63, 63, 63, 64, nil, 64, 64, 63,
77
- 64, 63, 64, 64, 64, 16, nil, 16, 16, 64,
78
- nil, 64, 16, nil, nil, 16, 67, 16, 67, 67,
79
- nil, nil, nil, 67, nil, nil, 67 ]
59
+ 56, 54, 56, 56, 55, 56, 56, 56, 56, 56,
60
+ 57, 58, 56, 65, 56, 31, 56, 49, 56, 56,
61
+ 56, 7, 68, 7, 7, 73, 7, 7, 7, 7,
62
+ 7, 78, 31, 7, 49, 7, 79, 7, 91, 7,
63
+ 7, 7, 64, 94, 64, 64, 97, 64, 100, 64,
64
+ 64, 64, 101, 0, 0, 104, 64, 66, 64, 66,
65
+ 66, 64, 66, 106, 66, 66, 66, 0, 1, 6,
66
+ 8, 66, 67, 66, 67, 67, 66, 67, 12, 67,
67
+ 67, 67, 15, 21, 24, 27, 67, 32, 67, 32,
68
+ 32, 67, 32, 28, 32, 32, 32, 30, 36, 32,
69
+ 38, 32, 69, 32, 69, 69, 32, 69, 40, 69,
70
+ 69, 69, 42, 43, 44, 45, 69, 5, 69, 5,
71
+ 5, 69, 5, 46, 5, 5, 5, 47, 48, 5,
72
+ 50, 5, 59, 5, 59, 59, 5, 59, 51, 59,
73
+ 59, 59, 52, nil, 59, nil, 59, nil, 59, nil,
74
+ 59, 59, 85, nil, 85, 85, nil, 85, nil, 85,
75
+ 85, 85, nil, nil, 85, nil, 85, 37, 85, 37,
76
+ 37, 85, 37, nil, 37, 37, 37, nil, nil, nil,
77
+ nil, 37, 11, 37, 11, 11, 37, 11, nil, 11,
78
+ 11, 11, nil, nil, 11, nil, 11, 96, 11, 96,
79
+ 96, 11, 96, nil, 96, 96, 96, nil, nil, 96,
80
+ nil, 96, 39, 96, 39, 39, 96, 39, nil, 39,
81
+ 39, 39, nil, nil, 39, nil, 39, 99, 39, 99,
82
+ 99, 39, 99, nil, 99, 99, 99, nil, nil, nil,
83
+ nil, 99, 33, 99, 33, 33, 99, 33, nil, 33,
84
+ 33, 33, nil, nil, 33, nil, 33, 74, 33, 74,
85
+ 74, 33, 74, nil, 74, 74, 74, nil, nil, 74,
86
+ nil, 74, 18, 74, 18, 18, 74, 18, nil, 18,
87
+ 18, 18, nil, nil, 18, nil, 18, nil, 18, 18,
88
+ 13, 18, 13, 13, nil, 13, nil, 13, 13, 13,
89
+ 17, nil, 17, 17, 13, nil, 13, 17, nil, nil,
90
+ 17, 70, 17, 70, 70, nil, nil, nil, 70, nil,
91
+ nil, 70 ]
80
92
 
81
93
  racc_action_pointer = [
82
- 5, 68, nil, nil, nil, 178, 51, -7, 72, nil,
83
- nil, 93, 72, nil, 52, nil, 238, 50, nil, nil,
84
- 67, nil, nil, 65, nil, nil, 84, 74, nil, 92,
85
- 4, 203, 68, nil, nil, 76, 123, 148, 90, nil,
86
- 102, 103, 99, 111, 119, 103, 104, -10, 126, 110,
87
- -20, nil, -9, 0, 13, 12, 19, 33, nil, nil,
88
- nil, nil, 7, 218, 228, 15, 83, 249, nil, nil,
89
- 22, 108, nil, nil, nil, 41, 27, nil, nil, nil,
90
- nil, nil, 133, nil, nil, nil, nil, 42, nil, nil,
91
- 49, nil, 163, 31, nil, 193, 41, 47, nil, nil,
92
- 52, nil, 49, nil ]
94
+ 48, 68, nil, nil, nil, 110, 50, 14, 70, nil,
95
+ nil, 175, 74, 283, nil, 54, nil, 293, 265, nil,
96
+ nil, 69, nil, nil, 64, nil, nil, 83, 79, nil,
97
+ 95, 4, 80, 235, nil, nil, 78, 160, 96, 205,
98
+ 97, nil, 104, 105, 100, 107, 121, 105, 106, 6,
99
+ 128, 114, 118, nil, -21, -17, -7, -8, -3, 125,
100
+ nil, nil, nil, nil, 35, -16, 50, 65, 0, 95,
101
+ 304, nil, nil, 6, 250, nil, nil, nil, 28, 17,
102
+ nil, nil, nil, nil, nil, 145, nil, nil, nil, nil,
103
+ nil, 30, nil, nil, 41, nil, 190, 24, nil, 220,
104
+ 34, 38, nil, nil, 44, nil, 45, nil ]
93
105
 
94
106
  racc_action_default = [
95
- -58, -58, -1, -2, -3, -58, -58, -11, -58, -4,
96
- -31, -58, -43, -45, -46, -47, -35, -58, -54, -55,
97
- -58, -57, -5, -58, -12, -13, -14, -17, -20, -21,
98
- -46, -58, -58, -26, 104, -58, -58, -58, -58, -36,
99
- -58, -58, -58, -58, -41, -58, -58, -46, -33, -58,
100
- -58, -52, -58, -29, -58, -19, -58, -58, -24, -25,
101
- -32, -44, -58, -58, -58, -58, -58, -35, -49, -53,
102
- -58, -58, -50, -51, -56, -58, -58, -15, -16, -18,
103
- -22, -23, -58, -28, -48, -37, -38, -58, -40, -42,
104
- -9, -34, -58, -58, -27, -58, -58, -6, -30, -39,
105
- -58, -10, -7, -8 ]
107
+ -60, -60, -1, -2, -3, -60, -60, -11, -60, -4,
108
+ -31, -60, -43, -60, -47, -48, -49, -35, -60, -56,
109
+ -57, -60, -59, -5, -60, -12, -13, -14, -17, -20,
110
+ -21, -48, -60, -60, -26, 108, -60, -60, -45, -60,
111
+ -60, -36, -60, -60, -60, -60, -41, -60, -60, -48,
112
+ -33, -60, -60, -54, -60, -29, -60, -19, -60, -60,
113
+ -24, -25, -32, -44, -60, -60, -60, -60, -60, -60,
114
+ -35, -51, -55, -60, -60, -52, -53, -58, -60, -60,
115
+ -15, -16, -18, -22, -23, -60, -28, -46, -50, -37,
116
+ -38, -60, -40, -42, -9, -34, -60, -60, -27, -60,
117
+ -60, -6, -30, -39, -60, -10, -7, -8 ]
106
118
 
107
119
  racc_goto_table = [
108
- 9, 50, 33, 2, 61, 49, 35, 46, 25, 22,
109
- 39, 81, 4, 24, 3, 23, 75, 1, nil, 45,
110
- nil, nil, nil, nil, nil, 62, 58, 59, nil, nil,
111
- nil, 85, 86, nil, 88, nil, nil, nil, nil, nil,
112
- nil, nil, nil, nil, nil, nil, nil, nil, nil, 33,
113
- nil, nil, 83, nil, nil, 78, nil, 80, 89, 91,
114
- 77, 39, nil, 99, nil, nil, nil, nil, nil, nil,
115
- nil, nil, nil, 90, nil, nil, nil, 94, nil, 93,
116
- 101, nil, nil, nil, nil, nil, nil, 97 ]
120
+ 9, 52, 34, 2, 63, 51, 36, 41, 26, 23,
121
+ 48, 38, 3, 25, 4, 24, 78, 84, 1, nil,
122
+ 47, nil, nil, nil, nil, nil, 65, 60, 61, nil,
123
+ nil, 87, nil, 89, 90, nil, 92, nil, nil, nil,
124
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
125
+ nil, 34, nil, nil, 86, nil, nil, 81, nil, 83,
126
+ 41, 95, 80, 93, nil, nil, 103, nil, nil, nil,
127
+ nil, nil, nil, nil, nil, nil, 94, nil, nil, nil,
128
+ 98, nil, 97, 105, nil, nil, nil, nil, nil, nil,
129
+ nil, 101 ]
117
130
 
118
131
  racc_goto_check = [
119
- 5, 8, 5, 2, 15, 16, 5, 18, 10, 2,
120
- 13, 14, 4, 9, 3, 6, 7, 1, nil, 2,
121
- nil, nil, nil, nil, nil, 16, 5, 5, nil, nil,
122
- nil, 15, 15, nil, 15, nil, nil, nil, nil, nil,
123
- nil, nil, nil, nil, nil, nil, nil, nil, nil, 5,
124
- nil, nil, 5, nil, nil, 10, nil, 10, 18, 16,
125
- 9, 13, nil, 15, nil, nil, nil, nil, nil, nil,
126
- nil, nil, nil, 2, nil, nil, nil, 5, nil, 2,
127
- 8, nil, nil, nil, nil, nil, nil, 5 ]
132
+ 5, 8, 5, 2, 15, 16, 5, 13, 10, 2,
133
+ 18, 19, 3, 9, 4, 6, 7, 14, 1, nil,
134
+ 2, nil, nil, nil, nil, nil, 16, 5, 5, nil,
135
+ nil, 15, nil, 15, 15, nil, 15, nil, nil, nil,
136
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
137
+ nil, 5, nil, nil, 5, nil, nil, 10, nil, 10,
138
+ 13, 16, 9, 18, nil, nil, 15, nil, nil, nil,
139
+ nil, nil, nil, nil, nil, nil, 2, nil, nil, nil,
140
+ 5, nil, 2, 8, nil, nil, nil, nil, nil, nil,
141
+ nil, 5 ]
128
142
 
129
143
  racc_goto_pointer = [
130
- nil, 17, 3, 14, 12, -5, 8, -37, -16, 6,
131
- 1, nil, nil, -6, -46, -32, -12, nil, -9, nil ]
144
+ nil, 18, 3, 12, 14, -5, 8, -39, -17, 6,
145
+ 1, nil, nil, -10, -42, -33, -13, nil, -7, -2 ]
132
146
 
133
147
  racc_goto_default = [
134
- nil, nil, nil, nil, nil, 48, nil, nil, nil, nil,
135
- nil, 26, 27, 29, nil, 10, nil, 44, nil, 12 ]
148
+ nil, nil, nil, nil, nil, 50, nil, nil, nil, nil,
149
+ nil, 27, 28, 30, nil, 10, nil, 46, nil, 12 ]
136
150
 
137
151
  racc_reduce_table = [
138
152
  0, 0, :racc_error,
139
- 1, 31, :_reduce_1,
140
- 1, 31, :_reduce_2,
141
- 1, 31, :_reduce_3,
142
- 2, 33, :_reduce_4,
143
- 2, 34, :_reduce_5,
144
- 6, 32, :_reduce_6,
145
- 7, 32, :_reduce_7,
146
- 8, 32, :_reduce_8,
147
- 3, 38, :_reduce_9,
148
- 5, 38, :_reduce_10,
149
- 0, 36, :_reduce_11,
150
- 1, 36, :_reduce_12,
151
- 1, 36, :_reduce_13,
152
- 1, 39, :_reduce_14,
153
- 3, 39, :_reduce_15,
154
- 3, 39, :_reduce_16,
155
- 1, 41, :_reduce_17,
156
- 3, 41, :_reduce_18,
157
- 2, 41, :_reduce_19,
158
- 1, 41, :_reduce_20,
159
- 1, 40, :_reduce_21,
160
- 3, 40, :_reduce_22,
161
- 3, 43, :_reduce_23,
162
- 2, 42, :_reduce_24,
163
- 2, 42, :_reduce_25,
164
- 1, 42, :_reduce_26,
165
- 2, 44, :_reduce_27,
166
- 1, 44, :_reduce_28,
167
- 0, 37, :_reduce_29,
168
- 3, 37, :_reduce_30,
169
- 1, 35, :_reduce_31,
170
- 3, 35, :_reduce_32,
171
- 1, 46, :_reduce_33,
172
- 3, 46, :_reduce_34,
173
- 0, 47, :_reduce_none,
174
- 1, 47, :_reduce_36,
175
- 3, 47, :_reduce_37,
176
- 3, 47, :_reduce_38,
177
- 5, 47, :_reduce_39,
178
- 3, 47, :_reduce_40,
179
- 1, 48, :_reduce_41,
180
- 3, 48, :_reduce_42,
181
- 1, 45, :_reduce_43,
182
- 3, 45, :_reduce_44,
183
- 1, 49, :_reduce_45,
184
- 1, 49, :_reduce_46,
185
- 1, 49, :_reduce_47,
186
- 4, 49, :_reduce_48,
187
- 3, 49, :_reduce_49,
188
- 3, 49, :_reduce_50,
189
- 3, 49, :_reduce_51,
190
- 2, 49, :_reduce_52,
191
- 3, 49, :_reduce_53,
192
- 1, 49, :_reduce_54,
193
- 1, 49, :_reduce_55,
194
- 3, 49, :_reduce_56,
195
- 1, 49, :_reduce_57 ]
196
-
197
- racc_reduce_n = 58
198
-
199
- racc_shift_n = 104
153
+ 1, 32, :_reduce_1,
154
+ 1, 32, :_reduce_2,
155
+ 1, 32, :_reduce_3,
156
+ 2, 34, :_reduce_4,
157
+ 2, 35, :_reduce_5,
158
+ 6, 33, :_reduce_6,
159
+ 7, 33, :_reduce_7,
160
+ 8, 33, :_reduce_8,
161
+ 3, 39, :_reduce_9,
162
+ 5, 39, :_reduce_10,
163
+ 0, 37, :_reduce_11,
164
+ 1, 37, :_reduce_12,
165
+ 1, 37, :_reduce_13,
166
+ 1, 40, :_reduce_14,
167
+ 3, 40, :_reduce_15,
168
+ 3, 40, :_reduce_16,
169
+ 1, 42, :_reduce_17,
170
+ 3, 42, :_reduce_18,
171
+ 2, 42, :_reduce_19,
172
+ 1, 42, :_reduce_20,
173
+ 1, 41, :_reduce_21,
174
+ 3, 41, :_reduce_22,
175
+ 3, 44, :_reduce_23,
176
+ 2, 43, :_reduce_24,
177
+ 2, 43, :_reduce_25,
178
+ 1, 43, :_reduce_26,
179
+ 2, 45, :_reduce_27,
180
+ 1, 45, :_reduce_28,
181
+ 0, 38, :_reduce_29,
182
+ 3, 38, :_reduce_30,
183
+ 1, 36, :_reduce_31,
184
+ 3, 36, :_reduce_32,
185
+ 1, 47, :_reduce_33,
186
+ 3, 47, :_reduce_34,
187
+ 0, 48, :_reduce_none,
188
+ 1, 48, :_reduce_36,
189
+ 3, 48, :_reduce_37,
190
+ 3, 48, :_reduce_38,
191
+ 5, 48, :_reduce_39,
192
+ 3, 48, :_reduce_40,
193
+ 1, 49, :_reduce_41,
194
+ 3, 49, :_reduce_42,
195
+ 1, 46, :_reduce_43,
196
+ 3, 46, :_reduce_44,
197
+ 2, 46, :_reduce_45,
198
+ 4, 46, :_reduce_46,
199
+ 1, 50, :_reduce_47,
200
+ 1, 50, :_reduce_48,
201
+ 1, 50, :_reduce_49,
202
+ 4, 50, :_reduce_50,
203
+ 3, 50, :_reduce_51,
204
+ 3, 50, :_reduce_52,
205
+ 3, 50, :_reduce_53,
206
+ 2, 50, :_reduce_54,
207
+ 3, 50, :_reduce_55,
208
+ 1, 50, :_reduce_56,
209
+ 1, 50, :_reduce_57,
210
+ 3, 50, :_reduce_58,
211
+ 1, 50, :_reduce_59 ]
212
+
213
+ racc_reduce_n = 60
214
+
215
+ racc_shift_n = 108
200
216
 
201
217
  racc_token_table = {
202
218
  false => 0,
@@ -225,12 +241,13 @@ racc_token_table = {
225
241
  :LBRACKET => 23,
226
242
  :RBRACKET => 24,
227
243
  :QUERY => 25,
228
- :STAR => 26,
229
- :LESS => 27,
230
- :GREATER => 28,
231
- :EOF => 29 }
244
+ :BANG => 26,
245
+ :STAR => 27,
246
+ :LESS => 28,
247
+ :GREATER => 29,
248
+ :EOF => 30 }
232
249
 
233
- racc_nt_base = 30
250
+ racc_nt_base = 31
234
251
 
235
252
  racc_use_result_var = true
236
253
 
@@ -277,6 +294,7 @@ Racc_token_to_s_table = [
277
294
  "LBRACKET",
278
295
  "RBRACKET",
279
296
  "QUERY",
297
+ "BANG",
280
298
  "STAR",
281
299
  "LESS",
282
300
  "GREATER",
@@ -618,15 +636,29 @@ module_eval(<<'.,.,', 'parser.racc', 101)
618
636
  end
619
637
  .,.,
620
638
 
621
- module_eval(<<'.,.,', 'parser.racc', 104)
639
+ module_eval(<<'.,.,', 'parser.racc', 102)
622
640
  def _reduce_45(val, _values, result)
623
- result = RDL::Type::SingletonType.new(val[0].to_sym)
641
+ result = RDL::Type::NonNullType.new val[1]
624
642
  result
625
643
  end
626
644
  .,.,
627
645
 
628
- module_eval(<<'.,.,', 'parser.racc', 106)
646
+ module_eval(<<'.,.,', 'parser.racc', 103)
629
647
  def _reduce_46(val, _values, result)
648
+ result = RDL::Type::UnionType.new(RDL::Type::NonNullType.new(val[1]), val[3])
649
+ result
650
+ end
651
+ .,.,
652
+
653
+ module_eval(<<'.,.,', 'parser.racc', 106)
654
+ def _reduce_47(val, _values, result)
655
+ result = RDL::Type::SingletonType.new(val[0].to_sym)
656
+ result
657
+ end
658
+ .,.,
659
+
660
+ module_eval(<<'.,.,', 'parser.racc', 108)
661
+ def _reduce_48(val, _values, result)
630
662
  if val[0] == 'nil' then
631
663
  result = $__rdl_nil_type
632
664
  elsif val[0] == 'true' then
@@ -643,8 +675,8 @@ module_eval(<<'.,.,', 'parser.racc', 106)
643
675
  end
644
676
  .,.,
645
677
 
646
- module_eval(<<'.,.,', 'parser.racc', 119)
647
- def _reduce_47(val, _values, result)
678
+ module_eval(<<'.,.,', 'parser.racc', 121)
679
+ def _reduce_49(val, _values, result)
648
680
  if $__rdl_special_types.has_key? val[0] then
649
681
  result = $__rdl_special_types[val[0]]
650
682
  else
@@ -655,8 +687,8 @@ module_eval(<<'.,.,', 'parser.racc', 119)
655
687
  end
656
688
  .,.,
657
689
 
658
- module_eval(<<'.,.,', 'parser.racc', 126)
659
- def _reduce_48(val, _values, result)
690
+ module_eval(<<'.,.,', 'parser.racc', 128)
691
+ def _reduce_50(val, _values, result)
660
692
  n = RDL::Type::NominalType.new(val[0])
661
693
  result = RDL::Type::GenericType.new(n, *val[2])
662
694
 
@@ -664,69 +696,69 @@ module_eval(<<'.,.,', 'parser.racc', 126)
664
696
  end
665
697
  .,.,
666
698
 
667
- module_eval(<<'.,.,', 'parser.racc', 129)
668
- def _reduce_49(val, _values, result)
699
+ module_eval(<<'.,.,', 'parser.racc', 131)
700
+ def _reduce_51(val, _values, result)
669
701
  result = val[1]
670
702
  result
671
703
  end
672
704
  .,.,
673
705
 
674
- module_eval(<<'.,.,', 'parser.racc', 131)
675
- def _reduce_50(val, _values, result)
706
+ module_eval(<<'.,.,', 'parser.racc', 133)
707
+ def _reduce_52(val, _values, result)
676
708
  result = RDL::Type::TupleType.new(*val[1])
677
709
 
678
710
  result
679
711
  end
680
712
  .,.,
681
713
 
682
- module_eval(<<'.,.,', 'parser.racc', 134)
683
- def _reduce_51(val, _values, result)
714
+ module_eval(<<'.,.,', 'parser.racc', 136)
715
+ def _reduce_53(val, _values, result)
684
716
  result = RDL::Type::StructuralType.new(Hash[*val[1]])
685
717
 
686
718
  result
687
719
  end
688
720
  .,.,
689
721
 
690
- module_eval(<<'.,.,', 'parser.racc', 137)
691
- def _reduce_52(val, _values, result)
722
+ module_eval(<<'.,.,', 'parser.racc', 139)
723
+ def _reduce_54(val, _values, result)
692
724
  result = RDL::Type::TupleType.new
693
725
 
694
726
  result
695
727
  end
696
728
  .,.,
697
729
 
698
- module_eval(<<'.,.,', 'parser.racc', 140)
699
- def _reduce_53(val, _values, result)
730
+ module_eval(<<'.,.,', 'parser.racc', 142)
731
+ def _reduce_55(val, _values, result)
700
732
  result = RDL::Type::FiniteHashType.new(Hash[*val[1]])
701
733
 
702
734
  result
703
735
  end
704
736
  .,.,
705
737
 
706
- module_eval(<<'.,.,', 'parser.racc', 142)
707
- def _reduce_54(val, _values, result)
738
+ module_eval(<<'.,.,', 'parser.racc', 144)
739
+ def _reduce_56(val, _values, result)
708
740
  result = RDL::Type::SingletonType.new(val[0].to_i)
709
741
  result
710
742
  end
711
743
  .,.,
712
744
 
713
- module_eval(<<'.,.,', 'parser.racc', 143)
714
- def _reduce_55(val, _values, result)
745
+ module_eval(<<'.,.,', 'parser.racc', 145)
746
+ def _reduce_57(val, _values, result)
715
747
  result = RDL::Type::SingletonType.new(val[0].to_f)
716
748
  result
717
749
  end
718
750
  .,.,
719
751
 
720
- module_eval(<<'.,.,', 'parser.racc', 145)
721
- def _reduce_56(val, _values, result)
752
+ module_eval(<<'.,.,', 'parser.racc', 147)
753
+ def _reduce_58(val, _values, result)
722
754
  result = RDL::Type::SingletonType.new(Kernel.const_get(val[1]))
723
755
 
724
756
  result
725
757
  end
726
758
  .,.,
727
759
 
728
- module_eval(<<'.,.,', 'parser.racc', 149)
729
- def _reduce_57(val, _values, result)
760
+ module_eval(<<'.,.,', 'parser.racc', 151)
761
+ def _reduce_59(val, _values, result)
730
762
  result = RDL::Type::WildQuery.new
731
763
  result
732
764
  end