summaryrefslogtreecommitdiff
path: root/test/ruby/test_compile_prism.rb
AgeCommit message (Collapse)Author
2023-10-20Add tests for all implemented nodes, leave ones that need fixing commented outJemma Issroff
2023-10-20Added TODOs on all implemented nodes, matched orderingJemma Issroff
2023-10-20[PRISM] Fixed StringConcatNode, uncommented testsJemma Issroff
2023-10-20[Bug #19966] [PRISM] Fix singleton method definitionNobuyoshi Nakada
2023-10-20[PRISM] Enclose in the test classNobuyoshi Nakada
2023-10-18Use assert_separately to avoid defining `foo`Aaron Patterson
When we eval the iseqs generated by prism, they can have side effects like defining methods. In this case, we were defining the method "foo", but other tests were expecting that the foo method would _not_ be defined.
2023-10-18Temporarily removed location code on scope nodesJemma Issroff
2023-10-18Remove pm_compile_context_t, move the context onto ScopeNodeJemma Issroff
We changed ScopeNodes to point to their parent (previous) ScopeNodes. Accordingly, we can remove pm_compile_context_t, and store all necessary context in ScopeNodes, allowing us to access locals from outer scopes.
2023-10-16[PRISM] Compile AliasGlobalVariableNode (#8675)Jemma Issroff
2023-10-16[PRISM] Fix more bugs in the compiler (#8658)Jemma Issroff
* Fixed ConstantPathWriteNode * FIxed FlipFlopNode
2023-10-16[PRISM] prevent underflow on popped splatarray (#8657)Adam Hess
prevent underflow on popped splatarray This only emits the splat array node when not popped
2023-10-13[PRISM] Compile fixes (#8644)Jemma Issroff
* Fix compiling UndefNodes * Fix compiling super on ClassNode * Fix compile popped for ModuleNode * Add checks for NULL nodes * Only add newhash if not popped
2023-10-04[Prism] Fix IfNode and ElseNodeMatt Valentine-House
ElseNode looks to have been implemented at the same time as IfNode, but was resulting in a stack underflow error. The following is from the test code ``` if foo bar end ``` ``` ❯ make run compiling compile.c linking miniruby ./miniruby -I./lib -I. -I.ext/common -r./arm64-darwin22-fake ./test.rb CRUBY: ************************************************** == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(2,19)> 0000 putself ( 2)[Li] 0001 opt_send_without_block <calldata!mid:foo, argc:0, FCALL|VCALL|ARGS_SIMPLE> 0003 branchunless 9 0005 putself 0006 opt_send_without_block <calldata!mid:bar, argc:0, FCALL|VCALL|ARGS_SIMPLE> 0008 pop 0009 putobject_INT2FIX_1_ 0010 leave PRISM: ************************************************** -- raw disasm-------- 0000 putself ( 2) 0001 send <calldata:foo, 0>, nil ( 2) 0004 branchunless <L001> ( 2) 0006 jump <L000> ( 2) <L000> [sp: 0] * 0008 pop ( 1) 0009 putself ( 2) 0010 send <calldata:bar, 0>, nil ( 2) 0013 pop ( 2) 0014 jump <L002> ( 1) <L001> [sp: 0] <L002> [sp: -1] 0016 putobject 1 ( 2) 0018 leave ( 1) --------------------- <compiled>: <compiled>:1: argument stack underflow (-1) (SyntaxError) make: *** [run] Error 1 ``` This commit fixes the stack underflow error for both IfNode and ElseNode and introduces tests for them.
2023-09-29Handle static array nodesKevin Newton
2023-09-29Compile implicit nodesKevin Newton
2023-09-29Fix up static hash compilationKevin Newton
2023-09-28Support local variable targeting in pattern matchingKevin Newton
2023-09-28Support the AlternationPatternNodeKevin Newton
2023-09-28Compile basic pattern matching expressionsKevin Newton
2023-09-28Consolidate regexp options, interpolated match last lineKevin Newton
2023-09-28[YARP] Implement MatchWriteNodeMatt Valentine-House
2023-09-28Fix order-dependent tests in test_compile_prismKevin Newton
2023-09-28Move CRuby-specific prism files to top levelKevin Newton