Updates project dependencies - #149
Conversation
Bumps the version of the `wfl` dependency to 25.8.28 in the `Cargo.lock` file. This change ensures the project uses the latest version of this crate. Files Changed: - `Cargo.lock` Explanation: - The `wfl` package version is updated from `25.8.26` to `25.8.28`.
|
Warning Rate limit exceeded@logbie has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 10 minutes and 22 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (2)
WalkthroughThis PR updates CI/versioning to support patch versions, adds a local permission for git tag, reformats analyzer and interpreter code without semantics changes, and broadens TypeChecker logic for identifying container property assignments during variable declarations. Changes
Sequence Diagram(s)sequenceDiagram
participant Parser
participant TypeChecker
participant SymbolTable
participant Container
Parser->>TypeChecker: analyze VariableDeclaration
TypeChecker->>Container: check current container context
alt Inside container OR symbol exists
TypeChecker->>TypeChecker: mark as container-property assignment
else
TypeChecker->>TypeChecker: treat as regular variable declaration
end
TypeChecker->>SymbolTable: define or update symbol
SymbolTable-->>TypeChecker: result (ok/error)
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~18 minutes Poem
✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
|
Claude finished @logbie's task —— View job PR Review: Updates project dependenciesReview Checklist:
Analysis:The change is a simple version bump from Code Quality & Best Practices: ✅ GoodWhat's Changed:
Positive aspects:
Potential Issues:
|
|
Claude finished @logbie's task —— View job PR Review: Updates project dependenciesReview Checklist:
Analysis SummaryThis PR primarily contains:
Code Quality & Best Practices: ✅ EXCELLENTPositive Aspects:
Potential Issues:
|
There was a problem hiding this comment.
Actionable comments posted: 0
🔭 Outside diff range comments (1)
.github/workflows/versioning.yml (1)
39-48: Harden version extraction & tag push in your GitHub workflowI’ve verified that the updated
sedcommand correctly extracts25.8.28fromsrc/version.rs. To avoid silent failures and over-pushing, please apply the following changes in.github/workflows/versioning.yml(around lines 39–48):
- enable strict error handling
- use a whitespace-tolerant
sedregex and fail if empty- verify tag existence via
git rev-parse- push only the newly created tag
# Extract version from version.rs - VERSION=$(grep -oP '(?<=VERSION: &str = ")[0-9]+\.[0-9]+\.[0-9]+' src/version.rs) + set -euo pipefail + # Extract version from version.rs (tolerates whitespace) + VERSION=$(sed -nE 's/.*VERSION:[[:space:]]*&str[[:space:]]*=[[:space:]]*"([0-9]+\.[0-9]+\.[0-9]+)".*/\1/p' src/version.rs | head -n1) + if [[ -z "${VERSION:-}" ]]; then + echo "Failed to extract version from src/version.rs" >&2 + exit 1 + fi # Check if this version tag already exists - if ! git tag -l | grep -q "^v$VERSION$"; then + if ! git rev-parse -q --verify "refs/tags/v$VERSION" >/dev/null; then git tag -a "v$VERSION" -m "Release $VERSION" - git push origin --tags + git push origin "v$VERSION" else echo "Tag v$VERSION already exists, skipping tagging" fi
🧹 Nitpick comments (2)
src/analyzer/mod.rs (1)
403-405: Consider MSRV:iflet-chains require a recent Rust stable; provide a compatible alternative.If your MSRV predates stabilization of let-chains in
ifconditions, this can break builds. If MSRV is recent, ignore; otherwise, use a nestedif let.Apply this diff if you need broader compatibility:
- if !is_property_assignment && let Err(error) = self.current_scope.define(symbol) { - self.errors.push(error); - } + if !is_property_assignment { + if let Err(error) = self.current_scope.define(symbol) { + self.errors.push(error); + } + }src/typechecker/mod.rs (1)
359-363: AI summary inconsistency: The code still requires property-key existence and known symbol type.The AI summary states the container-property assignment detection was broadened (no property-key check; fallback doesn’t require known type). However:
- Line 359 still requires
container_info.properties.contains_key(name).- Line 369 still requires
symbol.symbol_type.is_some().Please confirm intended behavior. If you do intend to broaden detection as summarized, apply the refactor below; otherwise, consider updating the PR summary.
Proposed changes to align with the summary:
- if let Some(ref container_name) = self.current_container - && let Some(container_info) = self.analyzer.get_container(container_name) - && container_info.properties.contains_key(name) + if let Some(ref container_name) = self.current_container + && self.analyzer.get_container(container_name).is_some() { // This is a container property assignment is_container_property_assignment = true; } // Also check if the analyzer has this symbol (fallback) if !is_container_property_assignment - && let Some(symbol) = self.analyzer.get_symbol(name) - && symbol.symbol_type.is_some() + && self.analyzer.get_symbol(name).is_some() { // Variable already exists with a known type is_container_property_assignment = true; }Caveat: This will suppress more “Could not infer type” errors inside container contexts and may mask genuine typos. If that’s not desired, keep the current stricter checks.
Also applies to: 366-372
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
Cargo.lockis excluded by!**/*.lock
📒 Files selected for processing (5)
.claude/settings.local.json(1 hunks).github/workflows/versioning.yml(1 hunks)src/analyzer/mod.rs(1 hunks)src/interpreter/mod.rs(1 hunks)src/typechecker/mod.rs(1 hunks)
🧰 Additional context used
📓 Path-based instructions (4)
src/**/*.rs
📄 CodeRabbit Inference Engine (CLAUDE.md)
src/**/*.rs: Always run cargo fmt --all to fix formatting issues
Always run cargo clippy --all-targets --all-features -- -D warnings and fix any reported errors
All Rust code must be formatted according to .rustfmt.toml
Files:
src/interpreter/mod.rssrc/analyzer/mod.rssrc/typechecker/mod.rs
{src/lexer/**/*.rs,src/parser/**/*.rs,src/analyzer/**/*.rs,src/typechecker/**/*.rs,src/interpreter/**/*.rs,TestPrograms/*.wfl}
📄 CodeRabbit Inference Engine (CLAUDE.md)
When adding a new feature, update the lexer (src/lexer/), parser (src/parser/), analyzer (src/analyzer/), typechecker (src/typechecker/), interpreter (src/interpreter/), and write tests in TestPrograms/
Files:
src/interpreter/mod.rssrc/analyzer/mod.rssrc/typechecker/mod.rs
src/interpreter/**/*.rs
📄 CodeRabbit Inference Engine (CLAUDE.md)
Interpreter debug output must use exec_trace! macro and never pollute program output
Files:
src/interpreter/mod.rs
{src/interpreter/**/*.rs,src/stdlib/**/*.rs}
📄 CodeRabbit Inference Engine (CLAUDE.md)
All I/O operations must be async and use the Tokio runtime
Files:
src/interpreter/mod.rs
🧠 Learnings (2)
📚 Learning: 2025-08-10T04:33:11.504Z
Learnt from: CR
PR: WebFirstLanguage/wfl#0
File: CLAUDE.md:0-0
Timestamp: 2025-08-10T04:33:11.504Z
Learning: Applies to src/parser/container_*.rs : Containers (similar to classes) are implemented in src/parser/container_*.rs
Applied to files:
src/interpreter/mod.rs
📚 Learning: 2025-08-12T09:39:16.465Z
Learnt from: logbie
PR: WebFirstLanguage/wfl#148
File: .claude/settings.local.json:41-44
Timestamp: 2025-08-12T09:39:16.465Z
Learning: The .claude/settings.local.json file is specifically formatted for Claude AI assistant usage and should not be reformatted to standard bash command syntax. The existing formatting is intentional and optimized for Claude's permission system.
Applied to files:
.claude/settings.local.json
🧬 Code Graph Analysis (1)
src/analyzer/mod.rs (1)
src/diagnostics/mod.rs (1)
error(81-92)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build, Test, Clippy
🔇 Additional comments (2)
.claude/settings.local.json (1)
45-46: LGTM: Permission added for git tag aligns with workflow changes.Addition of Bash(git tag:) (after Bash(git fetch:)) looks correct and consistent with the established, intentionally non-standard formatting of this file.
src/interpreter/mod.rs (1)
3002-3004: LGTM: Formatting-only change preserves behavior.Splitting the pattern match across lines does not alter semantics and remains idiomatic.
Improves the test suite by adopting modern Rust syntax and removing redundant code. - `tests/container_ast_corruption_test.rs`: Flattens nested `if let` statements into a single `let` chain, reducing nesting and improving readability. - `tests/colon_consumption_test.rs`: Removes a redundant `assert!(true)` statement. The test's success is implicitly confirmed by it not panicking.
|
Claude finished @logbie's task —— View job PR Review: Updates project dependenciesReview Checklist:
Analysis SummaryThis PR contains multiple types of changes:
Code Quality & Best Practices: ✅ EXCELLENTPositive Aspects:
Potential Issues:
|
Fix github tag system
Summary by CodeRabbit