rsense-core 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +1 -0
  5. data/README.md +35 -0
  6. data/Rakefile +84 -0
  7. data/TypeAnnotation.tokens +41 -0
  8. data/build.xml +84 -0
  9. data/build_lib/antlr-3.2.jar +0 -0
  10. data/lib/jars/ant-1.7.0.jar +0 -0
  11. data/lib/jars/ant-launcher-1.7.0.jar +0 -0
  12. data/lib/jars/antlr-runtime-3.2.jar +0 -0
  13. data/lib/jars/bsf-2.3.0.jar +0 -0
  14. data/lib/rsense-core.rb +28 -0
  15. data/lib/rsense.jar +0 -0
  16. data/lib/rsense/core.rb +5 -0
  17. data/lib/rsense/core/version.rb +5 -0
  18. data/lib/rsense/parser.rb +6 -0
  19. data/lib/rsense/ruby.rb +19 -0
  20. data/lib/rsense/typing.rb +13 -0
  21. data/lib/rsense/typing/annotation.rb +20 -0
  22. data/lib/rsense/typing/runtime.rb +23 -0
  23. data/lib/rsense/typing/vertex.rb +15 -0
  24. data/lib/rsense/util.rb +9 -0
  25. data/rsense-core.gemspec +30 -0
  26. data/src/org/cx4a/rsense/CodeAssist.java +744 -0
  27. data/src/org/cx4a/rsense/CodeAssistError.java +31 -0
  28. data/src/org/cx4a/rsense/CodeAssistResult.java +42 -0
  29. data/src/org/cx4a/rsense/CodeCompletionResult.java +65 -0
  30. data/src/org/cx4a/rsense/FindDefinitionResult.java +24 -0
  31. data/src/org/cx4a/rsense/LoadResult.java +19 -0
  32. data/src/org/cx4a/rsense/Main.java +916 -0
  33. data/src/org/cx4a/rsense/Options.java +353 -0
  34. data/src/org/cx4a/rsense/Project.java +103 -0
  35. data/src/org/cx4a/rsense/TypeInferenceResult.java +25 -0
  36. data/src/org/cx4a/rsense/WhereResult.java +19 -0
  37. data/src/org/cx4a/rsense/parser/TypeAnnotation.g +221 -0
  38. data/src/org/cx4a/rsense/parser/TypeAnnotationLexer.java +1759 -0
  39. data/src/org/cx4a/rsense/parser/TypeAnnotationParser.java +2025 -0
  40. data/src/org/cx4a/rsense/ruby/Block.java +10 -0
  41. data/src/org/cx4a/rsense/ruby/Context.java +75 -0
  42. data/src/org/cx4a/rsense/ruby/DynamicMethod.java +10 -0
  43. data/src/org/cx4a/rsense/ruby/DynamicScope.java +51 -0
  44. data/src/org/cx4a/rsense/ruby/Frame.java +95 -0
  45. data/src/org/cx4a/rsense/ruby/IRubyObject.java +17 -0
  46. data/src/org/cx4a/rsense/ruby/LocalScope.java +43 -0
  47. data/src/org/cx4a/rsense/ruby/MetaClass.java +50 -0
  48. data/src/org/cx4a/rsense/ruby/Ruby.java +242 -0
  49. data/src/org/cx4a/rsense/ruby/RubyClass.java +146 -0
  50. data/src/org/cx4a/rsense/ruby/RubyModule.java +255 -0
  51. data/src/org/cx4a/rsense/ruby/RubyObject.java +94 -0
  52. data/src/org/cx4a/rsense/ruby/Scope.java +7 -0
  53. data/src/org/cx4a/rsense/ruby/SpecialObject.java +15 -0
  54. data/src/org/cx4a/rsense/ruby/Visibility.java +17 -0
  55. data/src/org/cx4a/rsense/typing/Graph.java +1690 -0
  56. data/src/org/cx4a/rsense/typing/Propagation.java +73 -0
  57. data/src/org/cx4a/rsense/typing/Template.java +84 -0
  58. data/src/org/cx4a/rsense/typing/TemplateAttribute.java +158 -0
  59. data/src/org/cx4a/rsense/typing/TypeSet.java +48 -0
  60. data/src/org/cx4a/rsense/typing/annotation/ClassType.java +57 -0
  61. data/src/org/cx4a/rsense/typing/annotation/MethodType.java +79 -0
  62. data/src/org/cx4a/rsense/typing/annotation/TypeAnnotation.java +4 -0
  63. data/src/org/cx4a/rsense/typing/annotation/TypeAny.java +7 -0
  64. data/src/org/cx4a/rsense/typing/annotation/TypeApplication.java +37 -0
  65. data/src/org/cx4a/rsense/typing/annotation/TypeConstraint.java +29 -0
  66. data/src/org/cx4a/rsense/typing/annotation/TypeExpression.java +11 -0
  67. data/src/org/cx4a/rsense/typing/annotation/TypeIdentity.java +59 -0
  68. data/src/org/cx4a/rsense/typing/annotation/TypeOptional.java +22 -0
  69. data/src/org/cx4a/rsense/typing/annotation/TypePragma.java +22 -0
  70. data/src/org/cx4a/rsense/typing/annotation/TypeSplat.java +22 -0
  71. data/src/org/cx4a/rsense/typing/annotation/TypeTuple.java +35 -0
  72. data/src/org/cx4a/rsense/typing/annotation/TypeUnion.java +23 -0
  73. data/src/org/cx4a/rsense/typing/annotation/TypeVariable.java +44 -0
  74. data/src/org/cx4a/rsense/typing/runtime/AliasMethod.java +94 -0
  75. data/src/org/cx4a/rsense/typing/runtime/AnnotationHelper.java +69 -0
  76. data/src/org/cx4a/rsense/typing/runtime/AnnotationResolver.java +523 -0
  77. data/src/org/cx4a/rsense/typing/runtime/Array.java +84 -0
  78. data/src/org/cx4a/rsense/typing/runtime/ClassTag.java +27 -0
  79. data/src/org/cx4a/rsense/typing/runtime/DefaultMethod.java +115 -0
  80. data/src/org/cx4a/rsense/typing/runtime/Hash.java +131 -0
  81. data/src/org/cx4a/rsense/typing/runtime/LoopTag.java +21 -0
  82. data/src/org/cx4a/rsense/typing/runtime/Method.java +32 -0
  83. data/src/org/cx4a/rsense/typing/runtime/MonomorphicObject.java +77 -0
  84. data/src/org/cx4a/rsense/typing/runtime/ObjectAllocator.java +40 -0
  85. data/src/org/cx4a/rsense/typing/runtime/PolymorphicObject.java +90 -0
  86. data/src/org/cx4a/rsense/typing/runtime/Proc.java +100 -0
  87. data/src/org/cx4a/rsense/typing/runtime/RuntimeHelper.java +1339 -0
  88. data/src/org/cx4a/rsense/typing/runtime/SpecialMethod.java +119 -0
  89. data/src/org/cx4a/rsense/typing/runtime/TypeVarMap.java +112 -0
  90. data/src/org/cx4a/rsense/typing/runtime/VertexHolder.java +48 -0
  91. data/src/org/cx4a/rsense/typing/vertex/CallVertex.java +122 -0
  92. data/src/org/cx4a/rsense/typing/vertex/MultipleAsgnVertex.java +23 -0
  93. data/src/org/cx4a/rsense/typing/vertex/PassThroughVertex.java +20 -0
  94. data/src/org/cx4a/rsense/typing/vertex/SValueVertex.java +24 -0
  95. data/src/org/cx4a/rsense/typing/vertex/SplatVertex.java +24 -0
  96. data/src/org/cx4a/rsense/typing/vertex/ToAryVertex.java +24 -0
  97. data/src/org/cx4a/rsense/typing/vertex/TypeVarVertex.java +22 -0
  98. data/src/org/cx4a/rsense/typing/vertex/Vertex.java +221 -0
  99. data/src/org/cx4a/rsense/typing/vertex/YieldVertex.java +70 -0
  100. data/src/org/cx4a/rsense/util/HereDocReader.java +48 -0
  101. data/src/org/cx4a/rsense/util/Logger.java +111 -0
  102. data/src/org/cx4a/rsense/util/NodeUtil.java +198 -0
  103. data/src/org/cx4a/rsense/util/SourceLocation.java +70 -0
  104. data/src/org/cx4a/rsense/util/StringUtil.java +63 -0
  105. data/src/resources/org/cx4a/rsense/rsense.properties +1 -0
  106. data/stubs/1.8/_builtin.rb +3006 -0
  107. data/stubs/1.8/bigdecimal.rb +131 -0
  108. data/stubs/1.8/cgi.rb +257 -0
  109. data/stubs/1.8/date.rb +147 -0
  110. data/stubs/1.8/optparse.rb +113 -0
  111. data/stubs/1.8/rational.rb +47 -0
  112. data/stubs/1.8/set.rb +94 -0
  113. data/stubs/1.8/socket.rb +461 -0
  114. data/stubs/1.8/stringio.rb +129 -0
  115. data/test/data/a file.rb +1 -0
  116. data/test/data/benchmark.rb +12 -0
  117. data/test/data/crlf.rb +5 -0
  118. data/test/data/test.rb +19 -0
  119. data/test/script/all.rsense +2 -0
  120. data/test/script/array_dynamic.rsense +25 -0
  121. data/test/script/block_nested.rsense +7 -0
  122. data/test/script/builtin.rsense +785 -0
  123. data/test/script/class_method_partial_update.rsense +52 -0
  124. data/test/script/class_partial_update.rsense +17 -0
  125. data/test/script/find-definition.rsense +72 -0
  126. data/test/script/method_arg_onearg.rsense +6 -0
  127. data/test/script/method_arg_optional.rsense +7 -0
  128. data/test/script/method_partial_update.rsense +14 -0
  129. data/test/script/method_yield_arrayarg.rsense +8 -0
  130. data/test/script/method_yield_arrayarg_expand.rsense +8 -0
  131. data/test/script/method_yield_arrayarg_splat.rsense +17 -0
  132. data/test/script/misc.rsense +2 -0
  133. data/test/script/proc_higher_order.rsense +22 -0
  134. data/test/script/regression.rsense +95 -0
  135. data/test/script/stdlib.rsense +66 -0
  136. data/test/script/where.rsense +41 -0
  137. metadata +315 -0
@@ -0,0 +1,52 @@
1
+ type-inference --test=Class.Method.PartialUpdate1 --should-be=Fixnum
2
+ class C
3
+ def f(x) x_|_ end
4
+ end
5
+ C.new.f(1)
6
+ EOF
7
+
8
+ type-inference --test=Class.Method.PartialUpdate2 --keep-env --should-be=Fixnum
9
+ class C
10
+ def f(x) x_|_ end
11
+ end
12
+ C.new.f(1)
13
+ EOF
14
+
15
+ type-inference --test=Class.Method.PartialUpdate3 --keep-env --should-be=Fixnum
16
+ class C
17
+ def f(x) 1; x_|_ end
18
+ end
19
+ C.new.f(1)
20
+ EOF
21
+
22
+
23
+ type-inference --test=Class.Method.PartialUpdate4 --should-be=Fixnum
24
+ class C
25
+ def self.f(x) D.new.f(x) end
26
+ class D
27
+ def f(x) x_|_ end
28
+ end
29
+ end
30
+ C.f(1)
31
+ EOF
32
+
33
+ type-inference --test=Class.Method.PartialUpdate5 --keep-env --should-be=Fixnum
34
+ class C
35
+ def self.f(x) D.new.f(x) end
36
+ class D
37
+ def f(x) x_|_ end
38
+ end
39
+ end
40
+ C.f(1)
41
+ EOF
42
+
43
+ type-inference --test=Class.Method.PartialUpdate6 --keep-env --should-be=Fixnum
44
+ class C
45
+ def self.f(x) D.new.f(x) end
46
+ class D
47
+ def f(x) 1; x_|_ end
48
+ end
49
+ end
50
+ C.f(1)
51
+ EOF
52
+
@@ -0,0 +1,17 @@
1
+ type-inference --test=Class.PartialUpdate1 --should-be=Fixnum
2
+ class C
3
+ 1_|_
4
+ end
5
+ EOF
6
+
7
+ type-inference --test=Class.PartialUpdate2 --keep-env --should-be=Fixnum
8
+ class C
9
+ 1_|_
10
+ end
11
+ EOF
12
+
13
+ type-inference --test=Class.PartialUpdate3 --keep-env --should-be=Float
14
+ class C
15
+ 2.3_|_
16
+ end
17
+ EOF
@@ -0,0 +1,72 @@
1
+ find-definition --test=FindDefinitionCommand1 --should-be=(stdin):1
2
+ def f
3
+ end
4
+ f_|_
5
+ EOF
6
+
7
+ find-definition --keep-env --test=FindDefinitionCommand2 --should-be=(stdin):3
8
+ def f
9
+ end
10
+ def g
11
+ end
12
+ g_|_
13
+ EOF
14
+
15
+ find-definition --keep-env --test=FindDefinitionCommand3 --should-be=(stdin):2
16
+ class C
17
+ def f() end
18
+ end
19
+ C.new.f_|_
20
+ EOF
21
+
22
+ find-definition --keep-env --test=FindDefinitionCommand4 --should-be=(stdin):2
23
+ class C
24
+ def f() end
25
+ end
26
+ class D
27
+ def f() end
28
+ end
29
+ C.new.f_|_
30
+ EOF
31
+
32
+ find-definition --keep-env --test=FindDefinitionCommand5 --should-be=(stdin):5
33
+ class C
34
+ def f() end
35
+ end
36
+ class D
37
+ def f() end
38
+ end
39
+ D.new.f_|_
40
+ EOF
41
+
42
+ find-definition --keep-env --test=FindDefinitionCommand6 --should-be=(stdin):4
43
+ class C
44
+ def f() end
45
+ end
46
+ class D
47
+ def f() end
48
+ end
49
+ D_|_
50
+ EOF
51
+
52
+ find-definition --keep-env --test=FindDefinitionCommand7 --should-be=(stdin):3
53
+ class C
54
+ def f() end
55
+ class D
56
+ def f() end
57
+ end
58
+ end
59
+ C::D_|_
60
+ EOF
61
+
62
+ find-definition --keep-env --test=FindDefinitionCommand8 --should-be=(stdin):1
63
+ C = 1
64
+ C_|_
65
+ EOF
66
+
67
+ find-definition --keep-env --test=FindDefinitionCommand9 --should-be=(stdin):2
68
+ module M
69
+ C = 1
70
+ end
71
+ M::C_|_
72
+ EOF
@@ -0,0 +1,6 @@
1
+ type-inference --test=Method.Arg.OneArg --should-be=Fixnum
2
+ def f(x)
3
+ x
4
+ end
5
+ f(1)_|_
6
+ EOF
@@ -0,0 +1,7 @@
1
+ type-inference --test=Method.Arg.Optional --should-be=Fixnum
2
+ def f(x = 1)
3
+ x
4
+ end
5
+ f_|_
6
+ EOF
7
+
@@ -0,0 +1,14 @@
1
+ type-inference --test=Method.PartialUpdate1 --should-be=Fixnum
2
+ def f(x) x_|_ end
3
+ f(1)
4
+ EOF
5
+
6
+ type-inference --test=Method.PartialUpdate2 --keep-env --should-be=Fixnum
7
+ def f(x) x_|_ end
8
+ f(1)
9
+ EOF
10
+
11
+ type-inference --test=Method.Partialupdate3 --keep-env --should-be=Fixnum
12
+ def f(x) 1; x_|_ end
13
+ f(1)
14
+ EOF
@@ -0,0 +1,8 @@
1
+ type-inference --test=Method.Yield.ArrayArg --should-be=Array
2
+ def f
3
+ yield [1]
4
+ end
5
+ f {|x|
6
+ x_|_
7
+ }
8
+ EOF
@@ -0,0 +1,8 @@
1
+ type-inference --test=Method.Yield.ArrayArg.Expand --should-be=Float
2
+ def f
3
+ yield [1, 2.3]
4
+ end
5
+ f {|x, y|
6
+ y_|_
7
+ }
8
+ EOF
@@ -0,0 +1,17 @@
1
+ type-inference --test=Method.Yield.ArrayArg.Splat1 --should-be=Array
2
+ def f
3
+ yield [1, 2.3]
4
+ end
5
+ f {|x, *y|
6
+ y_|_
7
+ }
8
+ EOF
9
+
10
+ type-inference --test=Method.Yield.ArrayArg.Splat2 --should-be=String
11
+ def f
12
+ yield [1, 2.3, '']
13
+ end
14
+ f {|x, *y|
15
+ y[1]_|_
16
+ }
17
+ EOF
@@ -0,0 +1,2 @@
1
+ type-inference --file=test/data/crlf.rb --location=3:9 --test=CRLF --should-be=String
2
+ type-inference '--file=test/data/a file.rb' --location=1:2 --test=SpaceFile --should-be=Fixnum
@@ -0,0 +1,22 @@
1
+ type-inference --test=Proc.HigherOrder1 --should-be=Fixnum,Bignum
2
+ def set(&block)
3
+ $block = block
4
+ end
5
+ set {|a| a + 1}
6
+ $block.call(1)_|_
7
+ EOF
8
+
9
+ type-inference --test=Proc.HigherOrder2 --should-be=Fixnum,Bignum
10
+ def adder(a)
11
+ proc {|b| a + b }
12
+ end
13
+ adder(1).call(2)_|_
14
+ EOF
15
+
16
+ type-inference --keep-env --test=Proc.HigherOrder.Bug --should-be=Fixnum,Bignum
17
+ def adder(a)
18
+ proc {|b| a + b }
19
+ end
20
+ adder(1).call(2)_|_
21
+ EOF
22
+
@@ -0,0 +1,95 @@
1
+ type-inference --test=MegamorphicObject.InfinityLoop --should-be=Fixnum
2
+ def f(a)
3
+ a = []
4
+ a = []
5
+ a = []
6
+ a = []
7
+ a = []
8
+ f(a)
9
+ 1
10
+ end
11
+ f([])_|_
12
+ EOF
13
+
14
+ type-inference --test=Hash.OpElementAssign --should-be=String
15
+ a = {}
16
+ b = (a[''] ||= {})
17
+ b[''] = ''
18
+ a['']['']_|_
19
+ EOF
20
+
21
+ type-inference --test=Pathname --should-be=Pathname
22
+ class Pathname
23
+ def initialize(path)
24
+ @path = path
25
+ end
26
+
27
+ def sub(pattern, *rest, &block)
28
+ @path.sub(pattern) {}
29
+ end
30
+
31
+ def parent
32
+ self + '..'
33
+ end
34
+
35
+ def +(other)
36
+ other = Pathname.new(other)
37
+ end
38
+
39
+ def find(&block)
40
+ self.class.new(@path.sub('', ''))
41
+ end
42
+ end
43
+ Pathname.new('')_|_
44
+ EOF
45
+
46
+ type-inference --test=InstVar.ArrayMegamorphism1 --should-be=Array
47
+ class C
48
+ def f
49
+ @a = []
50
+ @a = []
51
+ @a = []
52
+ @a = []
53
+ @a = []
54
+ @a = []
55
+ @a_|_
56
+ end
57
+ end
58
+ EOF
59
+
60
+ type-inference --test=InstVar.ArrayMegamorphism2 --should-be=Fixnum
61
+ class C
62
+ def f
63
+ b = []
64
+ @a = b
65
+ @a = []
66
+ @a = []
67
+ @a = []
68
+ @a = []
69
+ @a = []
70
+ b << 1
71
+ @a.first_|_
72
+ end
73
+ end
74
+ EOF
75
+
76
+ type-inference --test=InstVar.ArrayMegamorphism3 --should-be=Object
77
+ class C
78
+ def f
79
+ @a = [1]
80
+ @a = ['']
81
+ @a = [2.3]
82
+ @a = [:a]
83
+ @a = [[]]
84
+ @a = [{}]
85
+ @a_|_
86
+ end
87
+ end
88
+ EOF
89
+
90
+ type-inference --test=ClassForModule --should-be=Fixnum
91
+ class C
92
+ def self.foo() 1 end
93
+ end
94
+ C.foo_|_
95
+ EOF
@@ -0,0 +1,66 @@
1
+ type-inference --test=BigDecimal --should-be=BigDecimal
2
+ require 'bigdecimal'
3
+ BigDecimal('')_|_
4
+ EOF
5
+
6
+ type-inference --test=CGI --should-be=CGI
7
+ require 'cgi'
8
+ CGI.new_|_
9
+ EOF
10
+
11
+ type-inference --test=Socket --should-be=TCPSocket
12
+ require 'socket'
13
+ TCPSocket.open('foo', 80)_|_
14
+ EOF
15
+
16
+ type-inference --test=StringIO --should-be=StringIO
17
+ require 'stringio'
18
+ StringIO.new_|_
19
+ EOF
20
+
21
+ type-inference --test=Date --should-be=Date
22
+ require 'date'
23
+ Date.today_|_
24
+ EOF
25
+
26
+ type-inference --test=DateTime --should-be=DateTime
27
+ require 'date'
28
+ DateTime.now_|_
29
+ EOF
30
+
31
+ type-inference --test=Rational --should-be=Rational
32
+ require 'rational'
33
+ Rational(0, 0)_|_
34
+ EOF
35
+
36
+ type-inference --test=Set --should-be=Set
37
+ require 'set'
38
+ Set[1, 2.3]_|_
39
+ EOF
40
+
41
+ type-inference --test=Set.Access --should-be=Fixnum
42
+ require 'set'
43
+ a = Set.new
44
+ a << 1
45
+ a.max_|_
46
+ EOF
47
+
48
+ type-inference --test=SortedSet --should-be=SortedSet
49
+ require 'set'
50
+ SortedSet[1, 2.3]_|_
51
+ EOF
52
+
53
+ type-inference --test=SortedSet.Access --should-be=Fixnum
54
+ require 'set'
55
+ a = SortedSet.new
56
+ a << 1
57
+ a.max_|_
58
+ EOF
59
+
60
+ type-inference --test=OptionParser --should-be=String,Boolean,TrueClass,FalseClass
61
+ require 'optparse'
62
+ OptionParser.new do |opt|
63
+ opt.on('-a') {|v| v_|_}
64
+ opt.order!
65
+ end
66
+ EOF
@@ -0,0 +1,41 @@
1
+ where --line=2 --test=WhereCommand1 --should-be=C
2
+ class C
3
+
4
+ def f
5
+ 1
6
+ end
7
+ end
8
+ EOF
9
+
10
+ where --line=3 --test=WhereCommand2 --should-be=C#f
11
+ class C
12
+ def f
13
+ 1
14
+ end
15
+ end
16
+ EOF
17
+
18
+ where --line=7 --test=WhereCommand3 --should-be=C#g
19
+ class C
20
+ def f
21
+ 1
22
+ end
23
+
24
+ def g
25
+ 2.3
26
+ end
27
+ end
28
+ EOF
29
+
30
+ where --line=9 --test=WhereCommand4 --should-be=C#g
31
+ class C
32
+ def f
33
+ 1
34
+ end
35
+
36
+ def g
37
+ 2.3
38
+ end
39
+
40
+ end
41
+ EOF