rdl 2.0.0.rc2 → 2.0.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
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