fancy 0.9.0 → 0.10.0

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 (70) hide show
  1. data/bin/fancy +1 -1
  2. data/bin/fspec +1 -1
  3. data/bin/ifancy +1 -0
  4. data/boot/compiler/parser/ext/fancy_parser.bundle +0 -0
  5. data/boot/fancy_ext/array.rb +0 -1
  6. data/boot/fancy_ext/object.rb +10 -0
  7. data/boot/rbx-compiler/parser/Makefile +207 -0
  8. data/boot/rbx-compiler/parser/fancy_parser.bundle +0 -0
  9. data/boot/rbx-compiler/parser/lexer.c +2314 -0
  10. data/boot/rbx-compiler/parser/lexer.h +316 -0
  11. data/boot/rbx-compiler/parser/parser.c +3133 -0
  12. data/boot/rbx-compiler/parser/parser.h +131 -0
  13. data/doc/api/fancy.jsonp +1 -1
  14. data/examples/echo.fy +1 -1
  15. data/examples/stupid_quicksort.fy +1 -1
  16. data/lib/array.fy +4 -0
  17. data/lib/block.fy +11 -8
  18. data/lib/class.fy +21 -0
  19. data/lib/compiler/ast.fy +1 -0
  20. data/lib/compiler/ast/identifier.fy +1 -3
  21. data/lib/compiler/ast/method_spec.fy +6 -0
  22. data/lib/contracts.fy +2 -2
  23. data/lib/documentation.fy +25 -24
  24. data/lib/enumerable.fy +38 -21
  25. data/lib/fancy_spec.fy +24 -17
  26. data/lib/fdoc.fy +32 -16
  27. data/lib/future.fy +26 -1
  28. data/lib/object.fy +4 -1
  29. data/lib/parser/ext/Makefile +207 -0
  30. data/lib/parser/ext/fancy_parser.bundle +0 -0
  31. data/lib/parser/ext/lexer.c +2442 -0
  32. data/lib/parser/ext/lexer.h +316 -0
  33. data/lib/parser/ext/lexer.lex +4 -4
  34. data/lib/parser/ext/parser.c +3400 -0
  35. data/lib/parser/ext/parser.h +135 -0
  36. data/lib/parser/ext/parser.y +52 -74
  37. data/lib/parser/methods.fy +20 -8
  38. data/lib/parser/parse_error.fy +2 -2
  39. data/lib/range.fy +1 -1
  40. data/lib/rbx.fy +1 -0
  41. data/lib/rbx/block.fy +0 -12
  42. data/lib/rbx/class.fy +1 -1
  43. data/lib/rbx/compiled_method.fy +4 -0
  44. data/lib/{eval.fy → rbx/eval.fy} +3 -3
  45. data/lib/rbx/hash.fy +13 -3
  46. data/lib/rbx/method.fy +1 -0
  47. data/lib/rbx/object.fy +5 -1
  48. data/lib/rbx/range.fy +1 -1
  49. data/lib/rbx/scopes.fy +15 -0
  50. data/lib/rbx/symbol.fy +4 -0
  51. data/lib/rbx/thread.fy +1 -1
  52. data/lib/set.fy +11 -0
  53. data/lib/string.fy +17 -17
  54. data/lib/symbol.fy +7 -3
  55. data/lib/tuple.fy +3 -8
  56. data/lib/version.fy +1 -1
  57. data/ruby_lib/fancy +1 -1
  58. data/ruby_lib/fancy.rb +6 -19
  59. data/ruby_lib/interactive/hilight.rb +5 -5
  60. data/tests/block.fy +36 -13
  61. data/tests/class.fy +124 -120
  62. data/tests/contracts.fy +9 -8
  63. data/tests/future.fy +29 -10
  64. data/tests/method.fy +5 -0
  65. data/tests/range.fy +8 -0
  66. data/tests/set.fy +16 -6
  67. data/tests/struct.fy +4 -4
  68. metadata +60 -55
  69. data/lib/queue.fy +0 -7
  70. data/tests/future_proxy.fy +0 -8
@@ -0,0 +1,135 @@
1
+ /* A Bison parser, made by GNU Bison 2.7. */
2
+
3
+ /* Bison interface for Yacc-like parsers in C
4
+
5
+ Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
+
20
+ /* As a special exception, you may create a larger work that contains
21
+ part or all of the Bison parser skeleton and distribute that work
22
+ under terms of your choice, so long as that work isn't itself a
23
+ parser generator using the skeleton or a modified version thereof
24
+ as a parser skeleton. Alternatively, if you modify or redistribute
25
+ the parser skeleton itself, you may (at your option) remove this
26
+ special exception, which will cause the skeleton and the resulting
27
+ Bison output files to be licensed under the GNU General Public
28
+ License without this special exception.
29
+
30
+ This special exception was added by the Free Software Foundation in
31
+ version 2.2 of Bison. */
32
+
33
+ #ifndef YY_YY_USERS_BAKKDOOR_PROJECTS_FANCY_FANCY_LIB_PARSER_EXT_PARSER_H_INCLUDED
34
+ # define YY_YY_USERS_BAKKDOOR_PROJECTS_FANCY_FANCY_LIB_PARSER_EXT_PARSER_H_INCLUDED
35
+ /* Enabling traces. */
36
+ #ifndef YYDEBUG
37
+ # define YYDEBUG 0
38
+ #endif
39
+ #if YYDEBUG
40
+ extern int yydebug;
41
+ #endif
42
+
43
+ /* Tokens. */
44
+ #ifndef YYTOKENTYPE
45
+ # define YYTOKENTYPE
46
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
47
+ know about them. */
48
+ enum yytokentype {
49
+ LPAREN = 258,
50
+ RPAREN = 259,
51
+ FUTURE_SEND = 260,
52
+ ASYNC_SEND = 261,
53
+ AT_LCURLY = 262,
54
+ LCURLY = 263,
55
+ RCURLY = 264,
56
+ LBRACKET = 265,
57
+ RBRACKET = 266,
58
+ LEFTHASH = 267,
59
+ RIGHTHASH = 268,
60
+ STAB = 269,
61
+ ARROW = 270,
62
+ THIN_ARROW = 271,
63
+ COMMA = 272,
64
+ SEMI = 273,
65
+ NL = 274,
66
+ COLON = 275,
67
+ RETURN_LOCAL = 276,
68
+ RETURN = 277,
69
+ TRY = 278,
70
+ CATCH = 279,
71
+ FINALLY = 280,
72
+ RETRY = 281,
73
+ SUPER = 282,
74
+ CLASS = 283,
75
+ DEF = 284,
76
+ DOT = 285,
77
+ DOLLAR = 286,
78
+ EQUALS = 287,
79
+ MATCH = 288,
80
+ CASE = 289,
81
+ IDENTIFIER = 290,
82
+ SELECTOR = 291,
83
+ RUBY_SEND_OPEN = 292,
84
+ RUBY_OPER_OPEN = 293,
85
+ CONSTANT = 294,
86
+ INTEGER_LITERAL = 295,
87
+ HEX_LITERAL = 296,
88
+ OCT_LITERAL = 297,
89
+ BIN_LITERAL = 298,
90
+ DOUBLE_LITERAL = 299,
91
+ STRING_LITERAL = 300,
92
+ MULTI_STRING_LITERAL = 301,
93
+ SYMBOL_LITERAL = 302,
94
+ REGEX_LITERAL = 303,
95
+ OPERATOR = 304,
96
+ BACKTICK_LITERAL = 305
97
+ };
98
+ #endif
99
+
100
+
101
+ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
102
+ typedef union YYSTYPE
103
+ {
104
+ /* Line 2065 of yacc.c */
105
+ #line 18 "/Users/bakkdoor/projects/fancy/fancy/lib/parser/ext/parser.y"
106
+
107
+ VALUE object;
108
+ ID symbol;
109
+
110
+
111
+ /* Line 2065 of yacc.c */
112
+ #line 113 "/Users/bakkdoor/projects/fancy/fancy/lib/parser/ext/parser.h"
113
+ } YYSTYPE;
114
+ # define YYSTYPE_IS_TRIVIAL 1
115
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
116
+ # define YYSTYPE_IS_DECLARED 1
117
+ #endif
118
+
119
+ extern YYSTYPE yylval;
120
+
121
+ #ifdef YYPARSE_PARAM
122
+ #if defined __STDC__ || defined __cplusplus
123
+ int yyparse (void *YYPARSE_PARAM);
124
+ #else
125
+ int yyparse ();
126
+ #endif
127
+ #else /* ! YYPARSE_PARAM */
128
+ #if defined __STDC__ || defined __cplusplus
129
+ int yyparse (VALUE self);
130
+ #else
131
+ int yyparse ();
132
+ #endif
133
+ #endif /* ! YYPARSE_PARAM */
134
+
135
+ #endif /* !YY_YY_USERS_BAKKDOOR_PROJECTS_FANCY_FANCY_LIB_PARSER_EXT_PARSER_H_INCLUDED */
@@ -86,6 +86,8 @@ extern char *yytext;
86
86
  %type <object> operator
87
87
  %type <object> selector
88
88
 
89
+ %type <object> def
90
+
89
91
 
90
92
  %type <object> identifier
91
93
  %type <object> any_identifier
@@ -116,14 +118,10 @@ extern char *yytext;
116
118
  %type <object> return_local_statement
117
119
  %type <object> return_statement
118
120
 
119
- %type <object> def
120
-
121
121
  %type <object> const_identifier
122
122
  %type <object> class_def
123
123
  %type <object> class_no_super
124
124
  %type <object> class_super
125
- %type <object> class_method_w_args
126
- %type <object> class_method_no_args
127
125
 
128
126
  %type <object> method_def
129
127
  %type <object> method_args
@@ -132,8 +130,8 @@ extern char *yytext;
132
130
  %type <object> method_arg_default
133
131
  %type <object> method_w_args
134
132
  %type <object> method_no_args
135
- %type <object> operator_def
136
- %type <object> class_operator_def
133
+ %type <object> method_spec
134
+ %type <object> operator_spec
137
135
 
138
136
  %type <object> message_send
139
137
  %type <object> unary_send
@@ -321,9 +319,6 @@ const_identifier: constant {
321
319
  }
322
320
  ;
323
321
 
324
- def: DEF { $$ = rb_intern("public"); }
325
- ;
326
-
327
322
  class_no_super: CLASS const_identifier expression_block {
328
323
  $$ = rb_funcall(self, rb_intern("ast:class:parent:body:"), 4, INT2NUM(yylineno), $2, Qnil, $3);
329
324
  }
@@ -340,103 +335,86 @@ class_super: CLASS const_identifier COLON const_identifier expression_block {
340
335
  }
341
336
  ;
342
337
 
343
- method_def: method_w_args
344
- | method_no_args
345
- | class_method_w_args
346
- | class_method_no_args
347
- | operator_def
348
- | class_operator_def
349
- ;
350
-
351
- method_arg: selector identifier {
352
- $$ = rb_funcall(self, rb_intern("ast:param:var:"), 3, INT2NUM(yylineno), $1, $2);
338
+ def: DEF {
339
+ $$ = rb_intern("def:");
353
340
  }
354
341
  ;
355
342
 
356
- method_args: method_arg {
357
- $$ = rb_funcall(self, rb_intern("ast:concat:"), 2, INT2NUM(yylineno), $1);
358
- }
359
- | method_args method_arg {
360
- $$ = rb_funcall(self, rb_intern("ast:concat:into:"), 3, INT2NUM(yylineno), $2, $1);
361
- }
362
- | method_args method_args_default {
363
- $$ = rb_funcall(self, rb_intern("ast:concat:into:"), 3, INT2NUM(yylineno), $2, $1);
364
- }
365
- | method_args_default {
366
- $$ = rb_funcall(self, rb_intern("ast:concat:"), 2, INT2NUM(yylineno), $1);
343
+ method_def: def method_spec {
344
+ $$ = rb_funcall(self, rb_intern("ast:define:method:on:"), 4, INT2NUM(yylineno), $1, $2, Qnil);
367
345
  }
368
- ;
369
-
370
- method_arg_default: selector identifier LPAREN space exp space RPAREN {
371
- $$ = rb_funcall(self, rb_intern("ast:param:var:default:"), 4, INT2NUM(yylineno), $1, $2, $5);
346
+ | def any_identifier method_spec {
347
+ $$ = rb_funcall(self, rb_intern("ast:define:method:on:"), 4, INT2NUM(yylineno), $1, $3, $2);
348
+ }
349
+ | any_identifier def method_spec {
350
+ $$ = rb_funcall(self, rb_intern("ast:define:method:on:"), 4, INT2NUM(yylineno), $2, $3, $1);
372
351
  }
373
352
  ;
374
353
 
375
- method_args_default: method_arg_default {
376
- $$ = rb_funcall(self, rb_intern("ast:concat:"), 2, INT2NUM(yylineno), $1);
377
- }
378
- | method_args_default space method_arg_default {
379
- $$ = rb_funcall(self, rb_intern("ast:concat:into:"), 3, INT2NUM(yylineno), $3, $1);
380
- }
354
+ method_spec: operator_spec
355
+ | method_w_args
356
+ | method_no_args
381
357
  ;
382
358
 
383
- method_w_args: def method_args expression_block {
384
- $$ = rb_funcall(self, rb_intern("ast:method:expand:access:"), 4, INT2NUM(yylineno), $2, $3, $1);
359
+ method_w_args: method_args expression_block {
360
+ $$ = rb_funcall(self, rb_intern("ast:method_spec:expand:"), 3, INT2NUM(yylineno), $1, $2);
385
361
  }
386
- | def method_args {
387
- $$ = rb_funcall(self, rb_intern("ast:method:expand:access:"), 4, INT2NUM(yylineno), $2, Qnil, $1);
362
+ | method_args {
363
+ $$ = rb_funcall(self, rb_intern("ast:method_spec:expand:"), 3, INT2NUM(yylineno), $1, Qnil);
388
364
  }
389
365
  ;
390
366
 
391
367
 
392
- method_no_args: def identifier expression_block {
393
- $$ = rb_funcall(self, rb_intern("ast:method:body:access:"), 4, INT2NUM(yylineno), $2, $3, $1);
368
+ method_no_args: identifier expression_block {
369
+ $$ = rb_funcall(self, rb_intern("ast:method_spec:body:"), 3, INT2NUM(yylineno), $1, $2);
394
370
  }
395
- | def identifier {
396
- $$ = rb_funcall(self, rb_intern("ast:method:body:access:"), 4, INT2NUM(yylineno), $2, Qnil, $1);
371
+ | identifier {
372
+ $$ = rb_funcall(self, rb_intern("ast:method_spec:body:"), 3, INT2NUM(yylineno), $1, Qnil);
397
373
  }
398
374
  ;
399
375
 
400
-
401
- class_method_w_args: def any_identifier method_args expression_block {
402
- $$ = rb_funcall(self, rb_intern("ast:method:expand:access:owner:"), 5, INT2NUM(yylineno), $3, $4, $1, $2);
376
+ operator_spec: operator identifier expression_block {
377
+ $$ = rb_funcall(self, rb_intern("ast:oper:arg:body:"), 4, INT2NUM(yylineno), $1, $2, $3);
378
+ }
379
+ | LBRACKET identifier RBRACKET expression_block {
380
+ $$ = rb_funcall(self, rb_intern("ast:oper:arg:body:"), 4,
381
+ INT2NUM(yylineno), fy_terminal_node_from(self, "ast:identifier:", "[]"), $2, $4);
403
382
  }
404
- | def any_identifier method_args {
405
- $$ = rb_funcall(self, rb_intern("ast:method:expand:access:owner:"), 5, INT2NUM(yylineno), $3, Qnil, $1, $2);
383
+ | LBRACKET identifier RBRACKET COLON identifier expression_block {
384
+ $$ = rb_funcall(self, rb_intern("ast:oper:arg:arg:body:"), 5,
385
+ INT2NUM(yylineno), fy_terminal_node_from(self, "ast:identifier:", "[]:"), $2, $5, $6);
406
386
  }
407
387
  ;
408
388
 
409
- class_method_no_args: def any_identifier identifier expression_block {
410
- $$ = rb_funcall(self, rb_intern("ast:method:body:access:owner:"), 5, INT2NUM(yylineno), $3, $4, $1, $2);
411
- }
412
- | def any_identifier identifier {
413
- $$ = rb_funcall(self, rb_intern("ast:method:body:access:owner:"), 5, INT2NUM(yylineno), $3, Qnil, $1, $2);
389
+ method_arg: selector identifier {
390
+ $$ = rb_funcall(self, rb_intern("ast:param:var:"), 3, INT2NUM(yylineno), $1, $2);
414
391
  }
415
392
  ;
416
393
 
417
- operator_def: def operator identifier expression_block {
418
- $$ = rb_funcall(self, rb_intern("ast:oper:arg:body:access:"), 5, INT2NUM(yylineno), $2, $3, $4, $1);
394
+ method_args: method_arg {
395
+ $$ = rb_funcall(self, rb_intern("ast:concat:"), 2, INT2NUM(yylineno), $1);
419
396
  }
420
- | def LBRACKET identifier RBRACKET expression_block {
421
- $$ = rb_funcall(self, rb_intern("ast:oper:arg:body:access:"), 5,
422
- INT2NUM(yylineno), fy_terminal_node_from(self, "ast:identifier:", "[]"), $3, $5, $1);
397
+ | method_args method_arg {
398
+ $$ = rb_funcall(self, rb_intern("ast:concat:into:"), 3, INT2NUM(yylineno), $2, $1);
423
399
  }
424
- | def LBRACKET identifier RBRACKET COLON identifier expression_block {
425
- $$ = rb_funcall(self, rb_intern("ast:oper:arg:arg:body:access:"), 6,
426
- INT2NUM(yylineno), fy_terminal_node_from(self, "ast:identifier:", "[]:"), $3, $6, $7, $1);
400
+ | method_args method_args_default {
401
+ $$ = rb_funcall(self, rb_intern("ast:concat:into:"), 3, INT2NUM(yylineno), $2, $1);
402
+ }
403
+ | method_args_default {
404
+ $$ = rb_funcall(self, rb_intern("ast:concat:"), 2, INT2NUM(yylineno), $1);
427
405
  }
428
406
  ;
429
407
 
430
- class_operator_def: def any_identifier operator identifier expression_block {
431
- $$ = rb_funcall(self, rb_intern("ast:oper:arg:body:access:owner:"), 6, INT2NUM(yylineno), $3, $4, $5, $1, $2);
408
+ method_arg_default: selector identifier LPAREN space exp space RPAREN {
409
+ $$ = rb_funcall(self, rb_intern("ast:param:var:default:"), 4, INT2NUM(yylineno), $1, $2, $5);
432
410
  }
433
- | def any_identifier LBRACKET identifier RBRACKET expression_block {
434
- $$ = rb_funcall(self, rb_intern("ast:oper:arg:body:access:owner:"), 6,
435
- INT2NUM(yylineno), fy_terminal_node_from(self, "ast:identifier:", "[]"), $4, $6, $1, $2);
411
+ ;
412
+
413
+ method_args_default: method_arg_default {
414
+ $$ = rb_funcall(self, rb_intern("ast:concat:"), 2, INT2NUM(yylineno), $1);
436
415
  }
437
- | def any_identifier LBRACKET identifier RBRACKET COLON identifier expression_block {
438
- $$ = rb_funcall(self, rb_intern("ast:oper:arg:arg:body:access:owner:"), 7,
439
- INT2NUM(yylineno), fy_terminal_node_from(self, "ast:identifier:", "[]:"), $4, $7, $8, $1, $2);
416
+ | method_args_default space method_arg_default {
417
+ $$ = rb_funcall(self, rb_intern("ast:concat:into:"), 3, INT2NUM(yylineno), $3, $1);
440
418
  }
441
419
  ;
442
420
 
@@ -250,14 +250,22 @@ class Fancy {
250
250
  }
251
251
  }
252
252
 
253
- def ast: line oper: op arg: arg body: body access: access ('public) owner: owner (nil) {
253
+ def ast: line oper: op arg: arg body: body {
254
254
  margs = [ast: line param: op var: arg]
255
- ast: line method: margs body: body access: access owner: owner
255
+ ast: line method_spec: margs body: body
256
256
  }
257
257
 
258
- def ast: line oper: op arg: arg1 arg: arg2 body: body access: access ('public) owner: owner (nil) {
258
+ def ast: line oper: op arg: arg1 arg: arg2 body: body {
259
259
  margs = [SelectorVarDefault new(op, arg1, nil), SelectorVarDefault new(ast: line identifier: "", arg2, nil)]
260
- ast: line method: margs body: body access: access owner: owner
260
+ ast: line method_spec: margs body: body
261
+ }
262
+
263
+ def ast: line define: define method: spec on: receiver {
264
+ ary = []
265
+ Array(spec) each: |spec| {
266
+ ary << $ ast: (spec line) method: (spec margs) body: (spec body) access: 'public owner: receiver
267
+ }
268
+ AST ExpressionList new: line list: ary
261
269
  }
262
270
 
263
271
  def ast: line method: margs body: body access: access ('public) owner: owner (nil) {
@@ -283,13 +291,17 @@ class Fancy {
283
291
  }
284
292
  }
285
293
 
286
- def ast: line method: margs expand: body access: access ('public) owner: owner (nil) {
294
+ def ast: line method_spec: margs expand: body {
287
295
  defs = []
288
296
  method: margs delegators: |sel fwd| {
289
- defs << $ ast: line method: sel body: fwd access: access owner: owner
297
+ defs << $ ast: line method_spec: sel body: fwd
290
298
  }
291
- defs << $ ast: line method: margs body: body access: access owner: owner
292
- AST ExpressionList new: line list: defs
299
+ defs << $ ast: line method_spec: margs body: body
300
+ defs
301
+ }
302
+
303
+ def ast: line method_spec: margs body: body {
304
+ AST MethodSpec new: line margs: margs body: body
293
305
  }
294
306
 
295
307
  def ast: line block: body {
@@ -1,10 +1,10 @@
1
1
  class Fancy {
2
2
  class Parser {
3
3
  class ParseError : StdError {
4
- read_slots: ['line, 'filename]
4
+ read_slots: ['line, 'filename, 'message]
5
5
  def initialize: @line message: @message filename: @filename {
6
6
  initialize: $ "Parse error near '" ++ @message ++ "' at line " ++ @line ++ " in " ++ @filename
7
7
  }
8
8
  }
9
9
  }
10
- }
10
+ }
@@ -23,6 +23,6 @@ class Range {
23
23
  @return @String@ representation of @self.
24
24
  """
25
25
 
26
- "(" ++ @start ++ ".." ++ @end ++ ")"
26
+ "(#{@start}..#{@end})"
27
27
  }
28
28
  }
data/lib/rbx.fy CHANGED
@@ -18,6 +18,7 @@ require: "rbx/integer"
18
18
  require: "rbx/fixnum"
19
19
  require: "rbx/float"
20
20
  require: "rbx/bignum"
21
+ require: "rbx/scopes"
21
22
  require: "rbx/block"
22
23
  require: "rbx/tuple"
23
24
  require: "rbx/range"
@@ -96,15 +96,3 @@ class Block {
96
96
  Proc new(&self)
97
97
  }
98
98
  }
99
-
100
- class Rubinius VariableScope {
101
- forwards_unary_ruby_methods
102
-
103
- def receiver {
104
- @self
105
- }
106
-
107
- def receiver: recv {
108
- @self = recv
109
- }
110
- }
@@ -1,5 +1,5 @@
1
1
  class Class {
2
- ruby_aliases: [ 'superclass, '===, 'ancestors, 'instance_methods, 'methods, 'to_s ]
2
+ ruby_aliases: [ 'superclass, '===, 'ancestors, 'instance_methods, 'methods, 'to_s, 'constants ]
3
3
 
4
4
  def new {
5
5
  """
@@ -29,3 +29,7 @@ class Rubinius CompiledMethod {
29
29
  defined_line
30
30
  }
31
31
  }
32
+
33
+ class Rubinius CompiledCode {
34
+ forwards_unary_ruby_methods
35
+ }
@@ -1,4 +1,4 @@
1
- require: "compiler"
1
+ require: "../compiler"
2
2
 
3
3
  def Fancy eval: code binding: binding (nil) file: file ("(fancy-eval)") line: line (1) {
4
4
  """
@@ -10,8 +10,8 @@ def Fancy eval: code binding: binding (nil) file: file ("(fancy-eval)") line: li
10
10
 
11
11
  binding if_nil: {
12
12
  binding = Binding setup(Rubinius VariableScope of_sender(),
13
- Rubinius CompiledMethod of_sender(),
14
- Rubinius StaticScope of_sender())
13
+ Rubinius CompiledMethod of_sender(),
14
+ Rubinius StaticScope of_sender())
15
15
  }
16
16
 
17
17
  # The compiled method