rdl 1.0.0.rc1

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 (89) hide show
  1. checksums.yaml +7 -0
  2. data/lib/rails_types.rb +1 -0
  3. data/lib/rdl.rb +56 -0
  4. data/lib/rdl/config.rb +121 -0
  5. data/lib/rdl/contracts/and.rb +29 -0
  6. data/lib/rdl/contracts/contract.rb +7 -0
  7. data/lib/rdl/contracts/flat.rb +31 -0
  8. data/lib/rdl/contracts/or.rb +25 -0
  9. data/lib/rdl/contracts/proc.rb +24 -0
  10. data/lib/rdl/switch.rb +20 -0
  11. data/lib/rdl/types/annotated_arg.rb +41 -0
  12. data/lib/rdl/types/finitehash.rb +81 -0
  13. data/lib/rdl/types/generic.rb +100 -0
  14. data/lib/rdl/types/intersection.rb +66 -0
  15. data/lib/rdl/types/lexer.rex +39 -0
  16. data/lib/rdl/types/lexer.rex.rb +148 -0
  17. data/lib/rdl/types/method.rb +219 -0
  18. data/lib/rdl/types/nil.rb +50 -0
  19. data/lib/rdl/types/nominal.rb +80 -0
  20. data/lib/rdl/types/optional.rb +54 -0
  21. data/lib/rdl/types/parser.racc +150 -0
  22. data/lib/rdl/types/parser.tab.rb +654 -0
  23. data/lib/rdl/types/singleton.rb +62 -0
  24. data/lib/rdl/types/structural.rb +72 -0
  25. data/lib/rdl/types/top.rb +50 -0
  26. data/lib/rdl/types/tuple.rb +61 -0
  27. data/lib/rdl/types/type.rb +24 -0
  28. data/lib/rdl/types/type_inferencer.rb +73 -0
  29. data/lib/rdl/types/union.rb +74 -0
  30. data/lib/rdl/types/var.rb +51 -0
  31. data/lib/rdl/types/vararg.rb +54 -0
  32. data/lib/rdl/types/wild.rb +26 -0
  33. data/lib/rdl/util.rb +56 -0
  34. data/lib/rdl/wrap.rb +505 -0
  35. data/lib/rdl_types.rb +2 -0
  36. data/types/other/chronic.rb +5 -0
  37. data/types/other/paperclip_attachment.rb +7 -0
  38. data/types/other/securerandom.rb +4 -0
  39. data/types/rails-4.2.1/fixnum.rb +3 -0
  40. data/types/rails-4.2.1/string.rb +3 -0
  41. data/types/rails-tmp/action_dispatch.rb +406 -0
  42. data/types/rails-tmp/active_record.rb +406 -0
  43. data/types/rails-tmp/devise_contracts.rb +216 -0
  44. data/types/ruby-2.2.0/_aliases.rb +4 -0
  45. data/types/ruby-2.2.0/abbrev.rb +5 -0
  46. data/types/ruby-2.2.0/array.rb +137 -0
  47. data/types/ruby-2.2.0/base64.rb +10 -0
  48. data/types/ruby-2.2.0/basic_object.rb +13 -0
  49. data/types/ruby-2.2.0/benchmark.rb +11 -0
  50. data/types/ruby-2.2.0/bigdecimal.rb +15 -0
  51. data/types/ruby-2.2.0/bigmath.rb +12 -0
  52. data/types/ruby-2.2.0/class.rb +17 -0
  53. data/types/ruby-2.2.0/complex.rb +42 -0
  54. data/types/ruby-2.2.0/coverage.rb +6 -0
  55. data/types/ruby-2.2.0/csv.rb +5 -0
  56. data/types/ruby-2.2.0/date.rb +6 -0
  57. data/types/ruby-2.2.0/dir.rb +38 -0
  58. data/types/ruby-2.2.0/encoding.rb +23 -0
  59. data/types/ruby-2.2.0/enumerable.rb +98 -0
  60. data/types/ruby-2.2.0/enumerator.rb +26 -0
  61. data/types/ruby-2.2.0/exception.rb +15 -0
  62. data/types/ruby-2.2.0/file.rb +124 -0
  63. data/types/ruby-2.2.0/fileutils.rb +6 -0
  64. data/types/ruby-2.2.0/fixnum.rb +45 -0
  65. data/types/ruby-2.2.0/float.rb +54 -0
  66. data/types/ruby-2.2.0/gem.rb +245 -0
  67. data/types/ruby-2.2.0/hash.rb +72 -0
  68. data/types/ruby-2.2.0/integer.rb +31 -0
  69. data/types/ruby-2.2.0/io.rb +103 -0
  70. data/types/ruby-2.2.0/kernel.rb +89 -0
  71. data/types/ruby-2.2.0/marshal.rb +5 -0
  72. data/types/ruby-2.2.0/matchdata.rb +26 -0
  73. data/types/ruby-2.2.0/math.rb +53 -0
  74. data/types/ruby-2.2.0/numeric.rb +46 -0
  75. data/types/ruby-2.2.0/object.rb +73 -0
  76. data/types/ruby-2.2.0/pathname.rb +106 -0
  77. data/types/ruby-2.2.0/process.rb +127 -0
  78. data/types/ruby-2.2.0/random.rb +15 -0
  79. data/types/ruby-2.2.0/range.rb +38 -0
  80. data/types/ruby-2.2.0/rational.rb +31 -0
  81. data/types/ruby-2.2.0/regexp.rb +30 -0
  82. data/types/ruby-2.2.0/set.rb +58 -0
  83. data/types/ruby-2.2.0/string.rb +145 -0
  84. data/types/ruby-2.2.0/strscan.rb +7 -0
  85. data/types/ruby-2.2.0/symbol.rb +29 -0
  86. data/types/ruby-2.2.0/time.rb +68 -0
  87. data/types/ruby-2.2.0/uri.rb +18 -0
  88. data/types/ruby-2.2.0/yaml.rb +5 -0
  89. metadata +131 -0
@@ -0,0 +1,89 @@
1
+ module Kernel
2
+ nowrap
3
+
4
+ # type 'self.Array', '([to_ary: () -> Array<t>]) -> Array<t>'
5
+ # type 'self.Array', '([to_a: () -> Array<t>]) -> Array<t>'
6
+ type 'self.Complex', '(Numeric x, Numeric y) -> Complex'
7
+ type 'self.Complex', '(String x) -> Complex'
8
+ type 'self.Float', '(Numeric x) -> Float'
9
+ # type 'self.Float', '(x : [to_f : () -> Float]) -> Float'
10
+ # type 'self.Hash', '(x : [to_hash : () -> Hash<k,v>]) -> Hash<k,v>'
11
+ type 'self.Hash', '(nil x) -> Hash<k,v>'
12
+ # type 'self.Hash, '(x : []) -> Hash<k,v>'
13
+ type 'self.Integer', '(Numeric or String arg, ?Fixnum base) -> Integer'
14
+ # type 'self.Integer', '(arg : [to_int : () -> Integer], base : ?Fixnum) -> Integer'
15
+ # type 'self.Integer', '(arg : [to_i : () -> Integer], base : ?Fixnum) -> Integer'
16
+ type 'self.Rational', '(Numeric x, Numeric y) -> Rational'
17
+ type 'self.Rational', '(String x) -> Rational'
18
+ # type 'self.String', '(arg : [to_s : () -> String]) -> String'
19
+ type 'self.__callee__', '() -> Symbol or nil'
20
+ type 'self.__dir__', '() -> String or nil'
21
+ type 'self.__method__', '() -> Symbol or nil'
22
+ type 'self.`', '(String) -> String'
23
+ type 'self.abort', '(?String msg) -> %any'
24
+ type 'self.at_exit', '() { () -> %any} -> Proc' # TODO: Fix proc
25
+ type 'self.autoload', '(String or Symbol module, String filename) -> nil'
26
+ type 'self.autoload?', '(Symbol or String name) -> String or nil'
27
+ type 'self.binding', '() -> Binding'
28
+ type 'self.block_given?', '() -> %bool'
29
+ type 'self.caller', '(?Fixnum start, ?Fixnum length) -> Array<String> or nil'
30
+ type 'self.caller', '(Range) -> Array<String> or nil'
31
+ type 'self.caller_locations', '(?Fixnum start, ?Fixnum length) -> Array<String> or nil'
32
+ type 'self.caller_locations', '(Range) -> Array<String> or nil'
33
+ # type 'self.catch' # TODO
34
+ type 'self.eval', '(String, ?Binding, ?String filename, ?Fixnum lineno) -> %any'
35
+ # type 'self.exec' #TODO
36
+ type 'self.exit', '(Fixnum or %bool status) -> %any'
37
+ type 'self.exit!', '(Fixnum or %bool status) -> %any'
38
+ type 'self.fail', '() -> %any'
39
+ type 'self.fail', '(String) -> %any'
40
+ type 'self.fail', '(Class, Array<String>) -> %any'
41
+ type 'self.fail', '(Class, String, Array<String>) -> %any'
42
+ # type 'self.fail', '(String or [exception : () -> String], ?String, ?Array<String>) -> %any'
43
+ # type 'self.fork' #TODO
44
+ type 'self.format', '(String format, *%any args) -> String'
45
+ type 'self.gets', '(?String, ?Fixnum) -> String'
46
+ type 'self.global_variables', '() -> Array<Symbol>'
47
+ type 'self.iterator?', '() -> %bool'
48
+ # type 'self.lambda' # TODO
49
+ type 'self.load', '(String filename, ?%bool) -> %bool'
50
+ type 'self.local_variables', '() -> Array<Symbol>'
51
+ # type 'self.loop' #TODO
52
+ type 'self.open', '(String path, ?(String or Fixnum) mode, ?String perm) -> IO or nil'
53
+ # type 'self.open', '(String path, mode : ?String, perm: ?String) {(IO) -> %any)} -> %any' # TODO: returns block value
54
+ # type 'self.open', '(String path, mode : ?Fixnum, perm: ?String) {(IO) -> %any)} -> %any' # TODO: returns block value
55
+ # type 'self.p', '(*[inspect : () -> String]) -> nil'
56
+ # type 'self.print', '(*[to_s : () -> String] -> nil'
57
+ type 'self.printf', '(?IO, ?String, *%any) -> nil'
58
+ type(:proc, "() {(*%any) -> %any} -> Proc") # TODO more precise
59
+ type 'self.putc', '(Fixnum) -> Fixnum'
60
+ type 'self.puts', '(*[to_s : () -> String]) -> nil'
61
+ type 'self.raise', '() -> %any'
62
+ # type 'self.raise', '(String or [exception : () -> String], ?String, ?Array<String>) -> %any'
63
+ # TODO: above same as fail?
64
+ type 'self.rand', '(Fixnum or Range max) -> Numeric'
65
+ type 'self.readline', '(?String, ?Fixnum) -> String'
66
+ type 'self.readlines', '(?String, ?Fixnum) -> Array<String>'
67
+ type 'self.require', '(String name) -> %bool'
68
+ type 'self.require_relative', '(String name) -> %bool'
69
+ type 'self.select',
70
+ '(Array<IO> read, ?Array<IO> write, ?Array<IO> error, ?Fixnum timeout) -> Array<String>' # TODO: return type?
71
+ # type 'self.set_trace_func' #TODO
72
+ type 'self.sleep', '(Numeric duration) -> Fixnum'
73
+ # type 'self.spawn' #TODO
74
+ rdl_alias :sprintf, :format # TODO: are they aliases?
75
+ type 'self.srand', '(Numeric number) -> Numeric'
76
+ type 'self.syscall', '(Fixnum num, *%any args) -> %any' # TODO : ?
77
+ # type 'self.system' # TODO
78
+ type 'self.test', '(String cmd, String file1, ?String file2) -> %bool or Time' # TODO: better, dependent type?
79
+ # type 'self.throw' # TODO
80
+ # type 'self.trace_var' # TODO
81
+ # type 'self.trap' # TODO
82
+ # type 'self.untrace_var' # TODO
83
+ type 'self.warn', '(*String msg) -> nil'
84
+ type :raise, '() -> nil'
85
+ type :raise, '(String) -> nil'
86
+ type :raise, '(Class, String, Array<String>) -> nil'
87
+ type :send, '(String or Symbol, *%any) -> %any'
88
+ type :send, '(String or Symbol, *%any) { (*%any) -> %any } -> %any'
89
+ end
@@ -0,0 +1,5 @@
1
+ module Marshal
2
+ nowrap
3
+
4
+ type 'self.load', '(String, ?Proc) -> Object'
5
+ end
@@ -0,0 +1,26 @@
1
+ class MatchData
2
+ nowrap
3
+
4
+ type :==, '(%any) -> %bool'
5
+ type :[], '(Fixnum i) -> String or nil'
6
+ type :[], '(Fixnum start, Fixnum length) -> Array<String>'
7
+ type :[], '(Range<Fixnum> range) -> Array<String>'
8
+ type :[], '(String or Symbol name) -> String or nil'
9
+ type :begin, '(Fixnum n) -> Fixnum'
10
+ type :captures, '() -> Array<String>'
11
+ type :end, '(Fixnum n) -> Fixnum'
12
+ type :eql?, '(%any other) -> %bool'
13
+ type :hash, '() -> Fixnum'
14
+ type :inspect, '() -> String'
15
+ type :length, '() -> Fixnum'
16
+ type :names, '() -> Array<String>'
17
+ type :offset, '(Fixnum n) -> Array<Fixnum>'
18
+ type :post_match, '() -> String'
19
+ type :pre_match, '() -> String'
20
+ type :regexp, '() -> Regexp'
21
+ type :size, '() -> Fixnum'
22
+ type :string, '() -> String'
23
+ type :to_a, '() -> Array<String>'
24
+ type :to_s, '() -> String'
25
+ type :values_at, '(*Fixnum indexes) -> Array<String>'
26
+ end
@@ -0,0 +1,53 @@
1
+ module Math
2
+ nowrap
3
+
4
+ type 'self.acos', '(%real x) -> Float'
5
+ pre('self.acos') { |x| -1 <= x && x <= 1 }
6
+ post('self.acos') { |r, _| 0 <= r && r <= Math::PI }
7
+ type 'self.acosh', '(%real x) -> Float'
8
+ pre('self.acosh') { |x| 1 <= x }
9
+ post('self.acosh') { |r, _| 0 <= r }
10
+ type 'self.asin', '(%real x) -> Float'
11
+ pre('self.asin') { |x| -1 <= x && x <= 1 }
12
+ post('self.asin') { |r, _| -Math::PI/2 <= r && r <= Math::PI/2 }
13
+ type 'self.asinh', '(%real x) -> Float'
14
+ type 'self.atan', '(%real x) -> Float'
15
+ post('self.atan') { |r, _| -Math::PI/2 <= r && r <= Math::PI/2 }
16
+ type 'self.atan2', '(%real y, %real x) -> Float'
17
+ post('self.atan2') { |r, _| -Math::PI <= r && r <= Math::PI }
18
+ type 'self.atanh', '(%real x) -> Float'
19
+ pre('self.atanh') { |x| -1 < x && x < 1 }
20
+ type 'self.cbrt', '(%real x) -> Float'
21
+ pre('self.cbrt') { |x| 0 <= x }
22
+ post('self.cbrt') { |x| 0 <= x }
23
+ type 'self.cos', '(%real x) -> Float'
24
+ post('self.cos') { |r, _| -1 <= r && r <= 1 }
25
+ type 'self.cosh', '(%real x) -> Float'
26
+ post('self.cosh') { |r, _| 1 <= r }
27
+ type 'self.erf', '(%real x) -> Float'
28
+ post('self.erf') { |r, _| -1 < r && r < 1 }
29
+ type 'self.erfc', '(%real x) -> Float'
30
+ post('self.erfc') { |r, _| 0 < r && r < 2 }
31
+ type 'self.exp', '(%real x) -> Float'
32
+ post('self.exp') { |r, _| 0 < r }
33
+ type 'self.frexp', '(%real x) -> [%real, %real]'
34
+ type 'self.gamma', '(%real x) -> Float'
35
+ type 'self.hypot', '(%real x, %real y) -> Float'
36
+ type 'self.ldexp', '(%real fraction, %real exponent) -> Float'
37
+ type 'self.lgamma', '(%real x) -> -1 or 1 or Float'
38
+ type 'self.log', '(%real x, ?(%real) base) -> Float'
39
+ type 'self.log10', '(%real x) -> Float'
40
+ pre('self.log10') { |x| 0 < x }
41
+ type 'self.log2', '(%real x) -> Float'
42
+ pre('self.log2') { |x| 0 < x }
43
+ type 'self.sin', '(%real x) -> Float'
44
+ post('self.sin') { |r, _| -1 <= r && r <= 1 }
45
+ type 'self.sinh', '(%real x) -> Float'
46
+ type 'self.sqrt', '(%real x) -> Float'
47
+ pre('self.sqrt') { |x| 0 <= x }
48
+ post('self.sqrt') { |r, _| 0 <= r }
49
+ type 'self.tan', '(%real x) -> Float'
50
+ type 'self.tanh', '(%real x) -> Float'
51
+ post('self.tanh') { |r, _| -1 < r && r < 1 }
52
+
53
+ end
@@ -0,0 +1,46 @@
1
+ class Numeric
2
+ nowrap
3
+
4
+ type :+, '() -> self'
5
+ type :-, '() -> Numeric'
6
+ type :<=>, '(Numeric) -> -1 or 0 or 1 or nil'
7
+ type :abs, '() -> Numeric'
8
+ type :abs2, '() -> %real'
9
+ type :angle, '() -> 0 or ${Math::PI}'
10
+ type :arg, '() -> 0 or ${Math::PI}'
11
+ type :ceil, '() -> Integer'
12
+ type :coerce, '(Numeric) -> [Numeric, Numeric]'
13
+ type :conj, '() -> self'
14
+ rdl_alias :conjugate, :conj
15
+ type :denominator, '() -> Integer'
16
+ post(:denominator) { |r, _| r > 0 }
17
+ type :div, '(Numeric) -> Integer'
18
+ type :divmod, '(Numeric) -> [Numeric, Numeric]'
19
+ type :eql?, '(Numeric) -> %bool'
20
+ type :fdiv, '(Numeric) -> Float'
21
+ type :floor, '() -> Integer'
22
+ type :i, '() -> Complex'
23
+ type :imag, '() -> 0'
24
+ rdl_alias :imaginary, :imag
25
+ # initialize_copy can't be invoked
26
+ type :integer?, '() -> %bool'
27
+ type :magnitude, '() -> Numeric'
28
+ type :modulo, '(Numeric) -> %real'
29
+ type :nonzero?, '() -> self or nil'
30
+ type :numerator, '() -> Integer'
31
+ type :phase, '() -> 0 or ${Math::PI}'
32
+ type :polar, '() -> [Numeric, Numeric]'
33
+ type :quo, '(Integer or Rational) -> Rational'
34
+ type :quo, '(Float) -> Float'
35
+ type :real, '() -> self'
36
+ type :rect, '() -> [Numeric, 0]'
37
+ rdl_alias :rectangular, :rect
38
+ type :remainder, '(Numeric) -> %real'
39
+ type :round, '(?Fixnum ndigits) -> Integer or Float'
40
+ # singleton_method_added can't be invoked
41
+ # type :step, # TODO: hash args
42
+ type :to_c, '() -> Complex'
43
+ type :to_int, '() -> Integer'
44
+ type :truncate, '() -> Integer'
45
+ type :zero?, '() -> %bool'
46
+ end
@@ -0,0 +1,73 @@
1
+ class Object
2
+ nowrap
3
+
4
+ # type :ARGF, ARGF
5
+ # type :ARGV, 'Array<String>'
6
+ # type :DATA, 'File'
7
+ # type :ENV, ENV
8
+ # type :FALSE, '%false'
9
+ # type :NIL, 'nil'
10
+ # type :RUBY_COPYRIGHT, 'String'
11
+ # type :RUBY_DESCRIPTION, 'String'
12
+ # type :RUBY_ENGINE, 'String'
13
+ # type :RUBY_PATCHLEVEL, Fixnum
14
+ # type :RUBY_PLATFORM, 'String'
15
+ # type :RUBY_RELEASE_DATE, 'String'
16
+ # type :RUBY_REVISION, Fixnum
17
+ # type :RUBY_VERSION, 'String'
18
+ # type :STDERR, 'IO'
19
+ # type :STDIN, 'IO'
20
+ # type :STDOUT, 'IO'
21
+ # type :TOPLEVEL_BINDING, 'Binding'
22
+ # type :TRUE, '%true'
23
+
24
+ type :!~, '(%any other) -> %bool'
25
+ type :<=>, '(%any other) -> Fixnum or nil'
26
+ type :===, '(%any other) -> %bool'
27
+ type :=~, '(%any other) -> nil'
28
+ type :class, '() -> Class'
29
+ type :clone, '() -> %any'
30
+ # type :define_singleton_method, '(XXXX : *XXXX)') # TODO
31
+ type :display, '(IO port) -> nil'
32
+ type :dup, '() -> %any an_object'
33
+ type :enum_for, '(?Symbol method, *%any args) -> Enumerator<%any>'
34
+ type :enum_for, '(?Symbol method, *%any args) { (*%any args) -> %any } -> Enumerator<%any>'
35
+ type :eql?, '(%any other) -> %bool'
36
+ # type :extend, '(XXXX : *XXXX)') # TODO
37
+ type :freeze, '() -> self'
38
+ type :frozen?, '() -> %bool'
39
+ type :hash, '() -> Fixnum'
40
+ type :inspect, '() -> String'
41
+ type :instance_of?, '(Class) -> %bool'
42
+ type :instance_variable_defined?, '(Symbol or String) -> %bool'
43
+ type :instance_variable_get, '(Symbol or String) -> %any'
44
+ type :instance_variable_set, '(Symbol or String, %any) -> %any' # returns 2nd argument
45
+ type :instance_variables, '() -> Array<Symbol>'
46
+ type :is_a?, '(Class or Module) -> %bool'
47
+ type :kind_of?, '(Class) -> %bool'
48
+ type :method, '(Symbol) -> Method'
49
+ type :methods, '(?%bool regular) -> Array<Symbol>'
50
+ type :nil?, '() -> %bool'
51
+ type :private_methods, '(?%bool all) -> Array<Symbol>'
52
+ type :protected_methods, '(?%bool all) -> Array<Symbol>'
53
+ type :public_method, '(Symbol) -> Method'
54
+ type :public_methods, '(?%bool all) -> Array<Symbol>'
55
+ type :public_send, '(Symbol or String, *%any args) -> %any'
56
+ type :remove_instance_variable, '(Symbol) -> %any'
57
+ # type :respond_to?, '(Symbol or String, ?%bool include_all) -> %bool'
58
+ # type :send, '(Symbol or String, *%any args) -> %any' # Can't wrap this, used outside wrap switch
59
+ type :singleton_class, '() -> Class'
60
+ type :singleton_method, '(Symbol) -> Method'
61
+ type :singleton_methods, '(?%bool all) -> Array<Symbol>'
62
+ type :taint, '() -> self'
63
+ type :tainted?, '() -> %bool'
64
+ # type :tap, '()') # TODO
65
+ type :to_enum, '(?Symbol method, *%any args) -> Enumerator<%any>'
66
+ type :to_enum, '(?Symbol method, *%any args) {(*%any args) -> %any} -> Enumerator<%any>'
67
+ # TODO: above alias for enum_for?
68
+ type :to_s, '() -> String'
69
+ type :trust, '() -> self'
70
+ type :untaint, '() -> self'
71
+ type :untrust, '() -> self'
72
+ type :untrusted?, '() -> %bool'
73
+ end
@@ -0,0 +1,106 @@
1
+ class Pathname
2
+ nowrap
3
+
4
+ type 'self.getwd', '() -> Pathname'
5
+ type 'self.glob', '(String p1, ?String p2) -> Array<Pathname>'
6
+ type 'self.new', '(%string or Pathname p1) -> Pathname' # p1 can be String-like
7
+ rdl_alias 'self.pwd', 'self.getwd'
8
+ type :+, '(String or Pathname other) -> Pathname'
9
+ rdl_alias :/, :+
10
+ type :<=>, '(%any p1) -> -1 or 0 or 1 or nil'
11
+ type :==, '(%any p1) -> %bool'
12
+ type :===, '(%any p1) -> %bool'
13
+ type :absolute?, '() -> %bool'
14
+ type :ascend, '() { (Pathname) -> %any } -> %any'
15
+ type :atime, '() -> Time'
16
+ type :basename, '(?String p1) -> Pathname' # guessing about arg type
17
+ type :binread, '(?Fixnum length, ?Fixnum offset) -> String'
18
+ type :binwrite, '(String, ?Fixnum offset) -> Fixnum' # TODO open_args
19
+ type :birthtime, '() -> Time'
20
+ type :blockdev?, '() -> %bool'
21
+ type :chardev?, '() -> %bool'
22
+ type :children, '(%bool with_directory) -> Array<Pathname>'
23
+ type :chmod, '(Fixnum mode) -> Fixnum'
24
+ type :chown, '(Fixnum owner, Fixnum group) -> Fixnum'
25
+ type :cleanpath, '(?%bool consider_symlink) -> %any'
26
+ type :ctime, '() -> Time'
27
+ type :delete, '() -> %any'
28
+ type :descend, '() { (Pathname) -> %any } -> %any'
29
+ type :directory?, '() -> %bool'
30
+ type :dirname, '() -> Pathname'
31
+ type :each_child, '(%bool with_directory) { (Pathname) -> %any } -> %any'
32
+ type :each_entry, '() { (Pathname) -> %any } -> %any'
33
+ type :each_filename, '() { (String) -> %any } -> %any'
34
+ type :each_filename, '() -> Enumerator<String>'
35
+ type :each_line, '(?String sep, ?Fixnum limit) { (String) -> %any } -> %any' # TODO open_args
36
+ type :each_line, '(?String sep, ?Fixnum limit) -> Enumerator<String>'
37
+ type :entries, '() -> Array<Pathname>'
38
+ type :eql?, '(%any) -> %bool'
39
+ type :executable?, '() -> %bool'
40
+ type :executable_real?, '() -> %bool'
41
+ type :exist?, '() -> %bool'
42
+ type :expand_path, '(?(String or Pathname) p1) -> Pathname'
43
+ type :extname, '() -> String'
44
+ type :file?, '() -> %bool'
45
+ type :find, '(%bool ignore_error) { (Pathname) -> %any } -> %any'
46
+ type :find, '(%bool ignore_error) -> Enumerator<Pathname>'
47
+ type :fnmatch, '(String pattern, ?Fixnum flags) -> %bool'
48
+ type :freeze, '() -> self' # TODO return type?
49
+ type :ftype, '() -> String'
50
+ type :grpowned?, '() -> %bool'
51
+ type :join, '(*(String or Pathname) args) -> Pathname'
52
+ type :lchmod, '(Fixnum mode) -> Fixnum'
53
+ type :lchown, '(Fixnum owner, Fixnum group) -> Fixnum'
54
+ type :lstat, '() -> File::Stat'
55
+ type :make_link, '(String old) -> 0'
56
+ type :symlink, '(String old) -> 0'
57
+ type :mkdir, '(String p1) -> 0'
58
+ type :mkpath, '() -> %any' # TODO return?
59
+ type :mountpoint?, '() -> %bool'
60
+ type :mtime, '() -> Time'
61
+ type :open, '(?String mode, ?String perm, ?Fixnum opt) -> File'
62
+ type :open, '(?String mode, ?String perm, ?Fixnum opt) { (File) -> t } -> t'
63
+ type :opendir, '(?Encoding) -> Dir'
64
+ type :opendir, '(?Encoding) { (Dir) -> u } -> u'
65
+ type :owned?, '() -> %bool'
66
+ type :parent, '() -> Pathname'
67
+ type :pipe?, '() -> %bool'
68
+ type :read, '(?Fixnum length, ?Fixnum offset, ?Fixnum open_args) -> String'
69
+ type :readable?, '() -> %bool'
70
+ type :readable_real, '() -> %bool'
71
+ type :readlines, '(?String sep, ?Fixnum limit, ?Fixnum open_args) -> Array<String>'
72
+ type :readlink, '() -> String file'
73
+ type :realdirpath, '(?String p1) -> String'
74
+ type :realpath, '(?String p1) -> String'
75
+ type :relative?, '() -> %bool'
76
+ type :relative_path_from, '(String or Pathname base_directory) -> Pathname'
77
+ type :rename, '(String p1) -> 0'
78
+ type :rmdir, '() -> 0'
79
+ type :rmtree, '() -> 0'
80
+ type :root?, '() -> %bool'
81
+ type :setgid?, '() -> %bool'
82
+ type :setuid?, '() -> %bool'
83
+ type :size, '() -> Fixnum'
84
+ type :size?, '() -> %bool'
85
+ type :socket?, '() -> %bool'
86
+ type :split, '() -> [Pathname, Pathname]'
87
+ type :stat, '() -> File::Stat'
88
+ type :sticky?, '() -> %bool'
89
+ type :sub, '(*String args) -> Pathname'
90
+ type :sub_ext, '(String p1) -> Pathname'
91
+ type :symlink?, '() -> %bool'
92
+ type :sysopen, '(?Fixnum mode, ?Fixnum perm) -> Fixnum'
93
+ type :taint, '() -> self'
94
+ type :to_path, '() -> String'
95
+ rdl_alias :to_s, :to_path
96
+ type :truncate, '(Fixnum length) -> 0'
97
+ type :unlink, '() -> Fixnum'
98
+ type :untaint, '() -> self'
99
+ type :utime, '(Time atime, Time mtime) -> Fixnum'
100
+ type :world_readable?, '() -> %bool'
101
+ type :world_writable?, '() -> %bool'
102
+ type :writable?, '() -> %bool'
103
+ type :writable_real?, '() -> %bool'
104
+ type :write, '(String, ?Fixnum offset, ?Fixnum open_args) -> Fixnum'
105
+ type :zero?, '() -> %bool'
106
+ end
@@ -0,0 +1,127 @@
1
+ module Process
2
+ nowrap
3
+
4
+ type 'self.abort', '(?String msg) -> %any'
5
+ type 'self.argv0', '() -> String frozen_string'
6
+ type 'self.clock_getres', '(Symbol or Fixnum clock_id, ?Symbol unit) -> Float or Integer'
7
+ type 'self.clock_gettime', '(Symbol or Fixnum clock_id, ?Symbol unit) -> Float or Integer'
8
+ type 'self.daemon', '(?%any nochdir, ?%any noclose) -> 0'
9
+ type 'self.detach', '(Fixnum pid) -> Thread'
10
+ type 'self.egid', '() -> Fixnum'
11
+ type 'self.egid=', '(Fixnum) -> Fixnum'
12
+ type 'self.euid', '() -> Fixnum'
13
+ type 'self.euid=', '(Fixnum) -> Fixnum user'
14
+ # type 'self.exec', '(env: ?Hash<String, String>, command:String, args:*String) -> %any' # TODO: env
15
+ type 'self.exit', '(?Fixnum status) -> %any'
16
+ type 'self.exit!', '(?Fixnum status) -> %any'
17
+ type 'self.fork', '() -> Fixnum or nil'
18
+ type 'self.fork', '() { () -> %any } -> Fixnum or nil'
19
+ type 'self.getpgid', '(Fixnum pid) -> Fixnum'
20
+ type 'self.getpgrp', '() -> Fixnum'
21
+ type 'self.getpriority', '(Fixnum kind, Fixnum) -> Fixnum'
22
+ type 'self.getrlimit', '(Symbol or String or Fixnum resource) -> [Fixnum, Fixnum] cur_max_limit'
23
+ type 'self.getsid', '(?Fixnum pid) -> Integer'
24
+ type 'self.gid', '() -> Fixnum'
25
+ type 'self.gid=', '(Fixnum) -> Fixnum'
26
+ type 'self.groups', '() -> Array<Fixnum>'
27
+ type 'self.groups=', '(Array<Fixnum>) -> Array<Fixnum>'
28
+ type 'self.initgroups', '(String username, Fixnum gid) -> Array<Fixnum>'
29
+ type 'self.kill', '(Fixnum or Symbol or String signal, *Fixnum pids) -> Fixnum'
30
+ type 'self.maxgroups', '() -> Fixnum'
31
+ type 'self.maxgroups=', '(Fixnum) -> Fixnum'
32
+ type 'self.pid', '() -> Fixnum'
33
+ type 'self.ppid', '() -> Fixnum'
34
+ type 'self.pgid', '(Fixnum pid, Fixnum) -> Fixnum'
35
+ type 'self.setpriority', '(Fixnum kind, Fixnum, Fixnum priority) -> 0'
36
+ type 'self.setproctitle', '(String) -> String'
37
+ type 'self.setrlimit', '(Symbol or String or Fixnum resource, Fixnum cur_limit, ?Fixnum max_limit) -> nil'
38
+ type 'self.setsid', '() -> Fixnum'
39
+ # type 'self.spawn', '(?Hash<String, String> env, String command, *String args) -> %any' # TODO: env
40
+ type 'self.times', '() -> Process::Tms'
41
+ type 'self.uid', '() -> Fixnum'
42
+ type 'self.uid=', '(Fixnum user) -> Fixnum'
43
+ type 'self.wait', '(?Fixnum pid, ?Fixnum flags) -> Fixnum'
44
+ type 'self.wait2', '(?Fixnum pid, ?Fixnum flags) -> [Fixnum, Fixnum] pid_and_status'
45
+ type 'self.waitall', '() -> Array<[Fixnum, Fixnum]>'
46
+ type 'self.waitpid', '(?Fixnum pid, ?Fixnum flags) -> Fixnum'
47
+ type 'self.waitpid2', '(?Fixnum pid, ?Fixnum flags) -> [Fixnum, Fixnum] pid_and_status'
48
+
49
+ module GID
50
+ nowrap
51
+
52
+ type 'self.change_privilege', '(Fixnum group) -> Fixnum'
53
+ type 'self.eid', '() -> Fixnum'
54
+ type 'self.from_name', '(String name) -> Fixnum gid'
55
+ type 'self.grant_privilege', '(Fixnum group) -> Fixnum'
56
+ rdl_alias 'self.eid=', 'self.grant_privilege'
57
+ type 'self.re_exchange', '() -> Fixnum'
58
+ type 'self.re_exchangeable?', '() -> %bool'
59
+ type 'self.rid', '() -> Fixnum'
60
+ type 'self.sid_available?', '() -> %bool'
61
+ type 'self.switch', '() -> Fixnum'
62
+ type 'self.switch', '() { () -> t } -> t'
63
+ end
64
+
65
+ module UID
66
+ nowrap
67
+
68
+ type 'self.change_privilege', '(Fixnum user) -> Fixnum'
69
+ type 'self.eid', '() -> Fixnum'
70
+ type 'self.from_name', '(String name) -> Fixnum uid'
71
+ type 'self.grant_privilege', '(Fixnum user) -> Fixnum'
72
+ rdl_alias 'self.eid=', 'self.grant_privilege'
73
+ type 'self.re_exchange', '() -> Fixnum'
74
+ type 'self.re_exchangeable?', '() -> %bool'
75
+ type 'self.rid', '() -> Fixnum'
76
+ type 'self.sid_available?', '() -> %bool'
77
+ type 'self.switch', '() -> Fixnum'
78
+ type 'self.switch', '() { () -> t } -> t'
79
+ end
80
+
81
+ class Status
82
+ nowrap
83
+
84
+ type :&, '(Fixnum num) -> Fixnum'
85
+ type :==, '(%any other) -> %bool'
86
+ type :>>, '(Fixnum num) -> Fixnum'
87
+ type :coredump?, '() -> %bool'
88
+ type :exited?, '() -> %bool'
89
+ type :exitstatus, '() -> Fixnum or nil'
90
+ type :inspect, '() -> String'
91
+ type :pid, '() -> Fixnum'
92
+ type :signaled?, '() -> %bool'
93
+ type :stopped?, '() -> %bool'
94
+ type :stopsig, '() -> Fixnum or nil'
95
+ type :success?, '() -> %bool'
96
+ type :termsig, '() -> Fixnum or nil'
97
+ type :to_i, '() -> Fixnum'
98
+ rdl_alias :to_int, :to_i
99
+ type :to_s, '() -> String'
100
+ end
101
+
102
+ module Sys
103
+ nowrap
104
+
105
+ type 'self.geteid', '() -> Fixnum'
106
+ type 'self.geteuid', '() -> Fixnum'
107
+ type 'self.getgid', '() -> Fixnum'
108
+ type 'self.getuid', '() -> Fixnum'
109
+ type 'self.issetugid', '() -> %bool'
110
+ type 'self.setegid', '(Fixnum group) -> nil'
111
+ type 'self.seteuid', '(Fixnum user) -> nil'
112
+ type 'self.setgid', '(Fixnum group) -> nil'
113
+ type 'self.setregid', '(Fixnum rid, Fixnum eid) -> nil'
114
+ type 'self.setresgid', '(Fixnum rid, Fixnum eid, Fixnum sid) -> nil'
115
+ type 'self.setresuid', '(Fixnum rid, Fixnum eid, Fixnum sid) -> nil'
116
+ type 'self.setreuid', '(Fixnum rid, Fixnum eid) -> nil'
117
+ type 'self.setrgid', '(Fixnum group) -> nil'
118
+ type 'self.setruid', '(Fixnum user) -> nil'
119
+ type 'self.setuid', '(Fixnum user) -> nil'
120
+ end
121
+
122
+ class Waiter
123
+ nowrap
124
+
125
+ type 'pid', '() -> Fixnum'
126
+ end
127
+ end