{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":507581550,"defaultBranch":"main","name":"ruby_lox","ownerLogin":"radanskoric","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-06-26T13:27:07.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1065097?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1698343157.0","currentOid":""},"activityList":{"items":[{"before":"a02b7d5835fa7b852b8883734bb8d3a7845969a3","after":"3bf064175ecd3a96b4a2b5d72479bcbf193afdea","ref":"refs/heads/sorbet","pushedAt":"2023-10-30T14:38:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"radanskoric","name":"Radan Skorić","path":"/radanskoric","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1065097?s=80&v=4"},"commit":{"message":"Move BUGS_FOUND to same location as on the main branch\n\nThis way it becomes easier to check out all versions of\ndoc by just changing the branch.","shortMessageHtmlLink":"Move BUGS_FOUND to same location as on the main branch"}},{"before":"632cf48e37d567ce621404e48d38e94c2f26c02c","after":"156f3dfa63de44dff443c15ab52e06aacc20e958","ref":"refs/heads/rbs","pushedAt":"2023-10-30T14:36:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"radanskoric","name":"Radan Skorić","path":"/radanskoric","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1065097?s=80&v=4"},"commit":{"message":"Move BUGS_FOUND to same location as on the main branch\n\nThis way it becomes easier to check out all versions of\ndoc by just changing the branch.","shortMessageHtmlLink":"Move BUGS_FOUND to same location as on the main branch"}},{"before":"93147f8191f920e8315e62462cd827730d21b520","after":"7ba5db7c0c6cec775b94d2b1250ce7651f11b10b","ref":"refs/heads/main","pushedAt":"2023-10-27T17:15:42.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"radanskoric","name":"Radan Skorić","path":"/radanskoric","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1065097?s=80&v=4"},"commit":{"message":"Raise branch coverage to maximum\n\nFor this commit I've enabled branch coverage on simplecov\nand raise to maximu. 2 branches I couldn't cover because\nthey are both case statements and branch coverage is\nsaying we are not triggering the else branch. However, both\ncases are exhaustive, covering all of the possible values\nthat can reach it. I would have to introduce a bug in the\nrest of the code to be able to write a test to reach the\nelse branch at that point.\n\nOverall, this branch of the experiment found the most issues,\nmore than type checkers.","shortMessageHtmlLink":"Raise branch coverage to maximum"}},{"before":null,"after":"632cf48e37d567ce621404e48d38e94c2f26c02c","ref":"refs/heads/rbs","pushedAt":"2023-10-26T17:59:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"radanskoric","name":"Radan Skorić","path":"/radanskoric","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1065097?s=80&v=4"},"commit":{"message":"Use regular non-lenient diagnostics\n\nThis uncovered the same 2 bugs that Sorbet uncovered.\nIt also forced me to spell out all Statements and\nExpressions, effectively unrolling the metaprogramming\nin the RBS files. Most of the typecheck issues were\ndue to those two files.","shortMessageHtmlLink":"Use regular non-lenient diagnostics"}},{"before":"de1c497ac1b75df5a1061a0e87181553aa185b08","after":"a02b7d5835fa7b852b8883734bb8d3a7845969a3","ref":"refs/heads/sorbet","pushedAt":"2023-10-19T13:57:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"radanskoric","name":"Radan Skorić","path":"/radanskoric","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1065097?s=80&v=4"},"commit":{"message":"Finish setting core files to strict typing\n\nThe only core files which are still not strict\nare statements.rb and expressions.rb and\nthe problem with them is that they do some\n(light) metaprogramming and sorbet has a very\ndifficult time with metaprogramming. To make it\nwork I'd need to define RBI files for them where\nall methods on all classes are essentially \"unrolled\"\nas if I typed them out manually.\n\nIf I'm doing that I'd want to generate it because\nthere's hardly anything in the actual files, both\nmethods are one-liners so if I was to generate RBI\nfiles automatically with a script I could then make\nit actually simpler by generating the ruby file\nitself with all classes defined without metaprogramming\nand I decided to stop short of that.","shortMessageHtmlLink":"Finish setting core files to strict typing"}},{"before":"47d52586311439343cb925cf234479081e76e678","after":"93147f8191f920e8315e62462cd827730d21b520","ref":"refs/heads/main","pushedAt":"2023-10-19T13:57:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"radanskoric","name":"Radan Skorić","path":"/radanskoric","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1065097?s=80&v=4"},"commit":{"message":"Replace minitest with rspec in Gemfile\n\nI've been writting RSpec tests from the start\nbut somehow missed that I have minitest in Gemfile.\n\nMy Gemfile.lock still had rspec-core in it which is\nwhy rspec worked but it would have been gone on next\nupdate. This fixes it.","shortMessageHtmlLink":"Replace minitest with rspec in Gemfile"}},{"before":"f9ad83a2566192da17261e854b956a95e1d41577","after":"47d52586311439343cb925cf234479081e76e678","ref":"refs/heads/main","pushedAt":"2023-10-19T13:47:59.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"radanskoric","name":"Radan Skorić","path":"/radanskoric","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1065097?s=80&v=4"},"commit":{"message":"Cleanup README","shortMessageHtmlLink":"Cleanup README"}},{"before":null,"after":"de1c497ac1b75df5a1061a0e87181553aa185b08","ref":"refs/heads/sorbet","pushedAt":"2023-10-19T13:46:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"radanskoric","name":"Radan Skorić","path":"/radanskoric","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1065097?s=80&v=4"},"commit":{"message":"Finish setting core files to strict typing\n\nThe only core files which are still not strict\nare statements.rb and expressions.rb and\nthe problem with them is that they do some\n(light) metaprogramming and sorbet has a very\ndifficult time with metaprogramming. To make it\nwork I'd need to define RBI files for them where\nall methods on all classes are essentially \"unrolled\"\nas if I typed them out manually.\n\nIf I'm doing that I'd want to generate it because\nthere's hardly anything in the actual files, both\nmethods are one-liners so if I was to generate RBI\nfiles automatically with a script I could then make\nit actually simpler by generating the ruby file\nitself with all classes defined without metaprogramming\nand I decided to stop short of that.","shortMessageHtmlLink":"Finish setting core files to strict typing"}},{"before":"47d52586311439343cb925cf234479081e76e678","after":"f9ad83a2566192da17261e854b956a95e1d41577","ref":"refs/heads/main","pushedAt":"2023-09-07T10:20:04.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"radanskoric","name":"Radan Skorić","path":"/radanskoric","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1065097?s=80&v=4"},"commit":{"message":"Set typed:strict on some files\n\nI initially planned to set it to strict on all files\nbut abandoned the experiment because I started running\ninto Sorbet limitations when adding it to interpreter.rb.\n\nExamples:\n- Sorbet requires any instance variable declared outside\n the initializer as nilable. At a few places I redeclare\n an instance variable in a way that it can't be nil, but\n because of this it's forcing me to make it nilable\n (which then causes a other unneeded cascading changes).\n\n If I try and get around it by adding notation saying\n it can't be nil with `T.must` it tells me:\n \"T.must called on RubyLox::Environment, which is never nil\"\n\n So it knows that it is never nil but it is forcing me to\n declare it nilable because of a totally separate rule.\n\n- Another example is how in Interpreter initializer I assign\n value of @environment to @globals but it can't infer that\n they are the same thing so I have to add the same notation\n to @globals again.","shortMessageHtmlLink":"Set typed:strict on some files"}},{"before":"107f32a7a46842c4bc34564fa8b7d11f46e4580a","after":"47d52586311439343cb925cf234479081e76e678","ref":"refs/heads/main","pushedAt":"2023-08-22T14:23:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"radanskoric","name":"Radan Skorić","path":"/radanskoric","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1065097?s=80&v=4"},"commit":{"message":"Cleanup README","shortMessageHtmlLink":"Cleanup README"}},{"before":"3e54c20d5249f21809a953f7362853f4983a34b7","after":"107f32a7a46842c4bc34564fa8b7d11f46e4580a","ref":"refs/heads/main","pushedAt":"2023-08-22T14:18:29.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"radanskoric","name":"Radan Skorić","path":"/radanskoric","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1065097?s=80&v=4"},"commit":{"message":"Small improvements\n\nAdd a usage section to README and fix a bug that\nwas missed where same variable access from multiple\nscopes was broken due to token comparison method\nwhich was added to faciliatet AST comparing in tests.","shortMessageHtmlLink":"Small improvements"}},{"before":"33b98617026e93690e684fba18cac8cc560a0853","after":"3e54c20d5249f21809a953f7362853f4983a34b7","ref":"refs/heads/main","pushedAt":"2023-08-21T14:13:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"radanskoric","name":"Radan Skorić","path":"/radanskoric","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1065097?s=80&v=4"},"commit":{"message":"Add constructors and initializers to classes\n\nThis implements:\nhttps://craftinginterpreters.com/classes.html#constructors-and-initializers","shortMessageHtmlLink":"Add constructors and initializers to classes"}},{"before":"8a4ec07d01ef26dcb5aeb92317b469b362a6fe93","after":"33b98617026e93690e684fba18cac8cc560a0853","ref":"refs/heads/main","pushedAt":"2023-08-21T13:32:34.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"radanskoric","name":"Radan Skorić","path":"/radanskoric","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1065097?s=80&v=4"},"commit":{"message":"Implement methods on classes\n\nThis adds callable methods that can be passed around\nas first class citizens and retain the reference to\ntheir original object. Implements code from:\nhttps://craftinginterpreters.com/classes.html#methods-on-classes\nand\nhttps://craftinginterpreters.com/classes.html#this","shortMessageHtmlLink":"Implement methods on classes"}},{"before":"df3f06d064560907ff763fb67baa9d43faa86f85","after":"8a4ec07d01ef26dcb5aeb92317b469b362a6fe93","ref":"refs/heads/main","pushedAt":"2023-08-21T09:35:28.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"radanskoric","name":"Radan Skorić","path":"/radanskoric","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1065097?s=80&v=4"},"commit":{"message":"Cleanup setup\n\nResolve rubocop warnings and add solargraph for nicer\ndevelopment from vscode.","shortMessageHtmlLink":"Cleanup setup"}},{"before":"d9063ecc5bb47c6f8bc499f675887243df4f3c5b","after":"df3f06d064560907ff763fb67baa9d43faa86f85","ref":"refs/heads/main","pushedAt":"2023-05-12T12:45:51.496Z","pushType":"push","commitsCount":1,"pusher":{"login":"radanskoric","name":"Radan Skorić","path":"/radanskoric","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1065097?s=80&v=4"},"commit":{"message":"Implement resovler errors\n\nAdd some static analysis to the resolver,\nas described in:\nhttps://craftinginterpreters.com/resolving-and-binding.html#resolution-errors","shortMessageHtmlLink":"Implement resovler errors"}},{"before":"254584adbf223a133c27fd2418f3acbb976e8231","after":"d9063ecc5bb47c6f8bc499f675887243df4f3c5b","ref":"refs/heads/main","pushedAt":"2023-05-12T10:13:07.175Z","pushType":"push","commitsCount":1,"pusher":{"login":"radanskoric","name":"Radan Skorić","path":"/radanskoric","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1065097?s=80&v=4"},"commit":{"message":"Add a resolver to fix variable binding\n\nThis implements the resolver class as described in\nhttps://craftinginterpreters.com/resolving-and-binding.html\n\nAlso, it fixes a small previous inconsistency with the book.\nI was passing in the string for a variable name in places\nwhere the book used the token object. This now started to\ncause more divergence from the book in my code and added\nsmall complexity in some places. So I've refactored it to\nmatch the book and use the token object instead of a string\nfor variable name.","shortMessageHtmlLink":"Add a resolver to fix variable binding"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAADoyJCBQA","startCursor":null,"endCursor":null}},"title":"Activity · radanskoric/ruby_lox"}