{"push_id":2375172752,"size":6,"distinct_size":6,"ref":"refs/heads/classes","head":"8c85b80181e00bf997223f2924e86622c8af129b","before":"2433992bf3e99e30a5201e13bf0d9d7cc397b096","commits":[{"sha":"414ca8d04d2c33b9d948d77e206d8679754adde6","author":{"name":"CrazyGuy108","email":"51153d2bdd5a5180d63da5aed75730534f6d8fa9@hansenfamily.us"},"message":"Parse classes\n\nThe keywords `class`, `init`, and `self` were added.\n\nAdded nodes for classes, fields, consructors, and methods. Internally,\nall class member nodes contain a reference to its parent class. Nodes\nalso exist for the self keyword, field access, and method calls.\n\nTo prevent a cyclic dependency, ClassNode's field/ctor/method fields are\nmutable so they can be added while parsing the class.\n\nSince separately implementing parseVariable/parseField would result in a\nlot of code duplication, a separate method parseVarData was created\nwhich parses everything and wraps the data in a struct. This same\ntechnique was done for parseFunction/parseMethod as well.\n\nA couple other things were refactored to make it all work well.\n\nAn unresolved named type was created to represent class types for the\ntime being. These types will be resolved later by the type resolver once\nthat's implemented.\n\nAdded protected constructors to the classes that FieldNode and\nMethodNode/CtorNode inherit from (VariableNode and FunctionNode) so that\nthey can fill in their own Node::Kind.","distinct":true,"url":"https://api.github.com/repos/vsl-lang/vsl-in-cpp/commits/414ca8d04d2c33b9d948d77e206d8679754adde6"},{"sha":"aeacd0b0028f9c8c6d6d67a39d44fdf857c2381f","author":{"name":"CrazyGuy108","email":"51153d2bdd5a5180d63da5aed75730534f6d8fa9@hansenfamily.us"},"message":"Merge branch 'master' into classes","distinct":true,"url":"https://api.github.com/repos/vsl-lang/vsl-in-cpp/commits/aeacd0b0028f9c8c6d6d67a39d44fdf857c2381f"},{"sha":"8e027527e3d2664c07f9710f7a9094b51e4f3a30","author":{"name":"CrazyGuy108","email":"51153d2bdd5a5180d63da5aed75730534f6d8fa9@hansenfamily.us"},"message":"Implement class field layout\n\nAdded some field getters to ClassNode for easier indexed iteration.\n\nClassTypes currently just store a hashmap of their field types and the\nname of each field.\n\nVSLContext now has a hashmap of named types and some methods for\ncreating ClassTypes.\n\nTypeConverter now takes a VSLContext so that it can lookup\nUnresolvedTypes. It can also convert ClassTypes into a reference-counted\npointer type.\n\nClass types are implemented as a pointer to a struct type (named\n`%<class name>`) that contains:\n1. An `i32` as a reference count.\n2. The actual struct type (named `%struct.<class name>`).","distinct":true,"url":"https://api.github.com/repos/vsl-lang/vsl-in-cpp/commits/8e027527e3d2664c07f9710f7a9094b51e4f3a30"},{"sha":"80b0dd94f70add410a4c78caacee6707ace6b7e1","author":{"name":"CrazyGuy108","email":"51153d2bdd5a5180d63da5aed75730534f6d8fa9@hansenfamily.us"},"message":"Error on duplicate fields\n\nDuplicate fields will be excluded in the ClassType, but will still be\npresent in the StructType.","distinct":true,"url":"https://api.github.com/repos/vsl-lang/vsl-in-cpp/commits/80b0dd94f70add410a4c78caacee6707ace6b7e1"},{"sha":"0a0400f482a969336bc9f8d129341bb26aa373f7","author":{"name":"CrazyGuy108","email":"51153d2bdd5a5180d63da5aed75730534f6d8fa9@hansenfamily.us"},"message":"Generate constructor declarations","distinct":true,"url":"https://api.github.com/repos/vsl-lang/vsl-in-cpp/commits/0a0400f482a969336bc9f8d129341bb26aa373f7"},{"sha":"8c85b80181e00bf997223f2924e86622c8af129b","author":{"name":"CrazyGuy108","email":"51153d2bdd5a5180d63da5aed75730534f6d8fa9@hansenfamily.us"},"message":"Create ClassType within parser\n\nIt gets a little tedious having to do multiple StringMap lookups in the\nTypeResolver. Hopefully this will help.","distinct":true,"url":"https://api.github.com/repos/vsl-lang/vsl-in-cpp/commits/8c85b80181e00bf997223f2924e86622c8af129b"}]}
{"actor":{"display_login":"CrazyGuy108"}}