fancy 0.9.0 → 0.10.0

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