feat: integrate type checker into compiler for return type validation#15
Merged
feat: integrate type checker into compiler for return type validation#15
Conversation
Add `type_check` option to Compiler that validates return types at compile time. When enabled, the compiler infers method return types using ASTTypeInferrer and compares them against declared return type annotations. Raises TypeCheckError on mismatch. Changes: - Add type_check parameter to Compiler.new - Integrate ASTTypeInferrer for return type inference - Validate both top-level functions and class methods - Support union types, nullable types, and subtype relationships - Fix TypeCheckError to properly inherit from StandardError Fixes #14
- Add type_check: true to DEFAULT_CONFIG in Config class - Add Config#type_check? method to read the setting - Compiler reads type_check? from config instead of parameter - Remove redundant type_check parameter from Compiler.new - CLI and Watcher use config-driven type checking - Add type_check? mock to tests not testing type validation
- Normalize Boolean, TrueClass, FalseClass to bool in type comparison - Disable type checking in E2E integration test (tests compilation, not types)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
type_check: trueoption toCompiler.newto enable validationTypeCheckErrorto properly inherit fromStandardErrorfor proper exception handlingChanges
lib/t_ruby/compiler.rb: Add type checking logic withcheck_types,check_method_return_type,types_compatible?methodslib/t_ruby/type_checker.rb: FixTypeCheckErrorto inherit fromStandardErrorand avoid infinite recursion into_sspec/t_ruby/compiler_spec.rb: Add tests for type validation scenariosTest plan
TypeCheckError(nil vs bool, String vs Integer)type_check: false(default)Fixes #14
🤖 Generated with Claude Code