A Task You MUST Do If You’re Using Claude Code with Git



This content originally appeared on DEV Community and was authored by CharmPic

This title is not an exaggeration.

Claude Code tends to lose its “memory” due to context compression.

After letting Claude Code work on a project for a long time, I ask it to review the git history to ensure no processing was lost due to context compression.

↓ A real-world example:

    "Alright, just in case, check the git diff carefully and see if any processing was lost due to context compression, meow!"

✻ Thinking...

The user is asking me to carefully check for any lost processing due to context compression. I need to ensure that no functionality or issues were missed during the refactoring of parser.rs into a new module.

First, I'll check what has changed with git diff and compare the original parser.rs with the new parser modules to confirm no features are missing.

● Understood! It's possible that some crucial processing has been lost due to context compression. Let's check this carefully!

● Bash(git log --oneline -5)
⎿ be31a82 refactor: complete module split of parser.rs - from 1,863 lines to 1,325 lines
c1041bf refactor: complete integration of duplicate Box implementations - centralized into src/boxes/
2868f3e feat: static method complete implementation - Math.min operation confirmed
... +2 lines (ctrl+r to expand)

✻ Thinking...

I've confirmed the latest commit. The split of parser.rs is the most recent commit, so I need to check this in detail.

First, let's use git diff to see exactly what changed.

● Bash(git show --stat be31a82)
⎿ commit be31a82af4e77dafab9b4ad3b5a8fcaea26591fd
Author: Nyash Development Team nyash@example.com
Date:   Fri Aug 8 07:18:46 2025 +0900
... +39 lines (ctrl+r to expand)

✻ Thinking...

OK, I can see the files that were changed. The important points are:

    parser.rs was renamed to parser_old.rs.

    A new parser/ directory with mod.rs, expressions.rs, statements.rs, declarations.rs, and structures.rs was created.

    lib.rs was slightly modified.

The problem here is that declarations.rs is a "placeholder implementation." This means important functions for box declarations, function declarations, static function declarations, etc., from the original parser.rs may be missing.

First, I will check a list of functions from the original parser.rs.

● Search(pattern: "^    fn [a-zA-Z_][a-zA-Z0-9_]*", path: "src/parser_old.rs", output_mode: "content")
⎿ Found 52 lines (ctrl+r to expand)

✻ Thinking...

This is a critical issue! The original parser.rs had many important functions, but the new parser/declarations.rs only has a placeholder.

Specifically, these important functions are missing:

    parse_box_declaration (line 143)

    parse_interface_box_declaration (line 376)

    parse_global_var (line 469)

    parse_function_declaration (line 636)

    parse_static_function_declaration (line 701)

    parse_include (line 1281)

    parse_local (line 1302)

    parse_try_catch (line 1341)

    parse_catch_clause (line 1427)

    parse_throw (line 1466)

    Various helper functions

These are not implemented anywhere in the new parser module.

First, let's confirm which functions have been implemented in which module.

● Ah! This is a major problem. The original parser.rs has 45 functions, but declarations.rs is just a placeholder. All the important declaration parsing functions are completely missing😱

Let's check which functions are implemented in the new parser module:

● Bash(find src/parser -name "*.rs" -exec grep -H "fn [a-zA-Z_]" {} ; | grep -v test)
⎿ src/parser/declarations.rs:    pub(super) fn parse_box_declaration(&mut self) -> Result<ASTNode, ParseError> {
src/parser/declarations.rs:    pub(super) fn parse_interface_box_declaration(&mut self) -> Result<ASTNode, ParseError> {
src/parser/declarations.rs:    pub(super) fn parse_global_var(&mut self) -> Result<ASTNode, ParseError> {
... +41 lines (ctrl+r to expand)

✻ Thinking...

I've checked carefully! In fact, many of the important functions have already been implemented in the new modules:

expressions.rs: All expression-related functions are implemented.
statements.rs: All statement-related functions are implemented (include, local, try_catch, catch_clause, throw, nowait, break, etc.).
mod.rs: All utility functions are implemented.

The problem is declarations.rs: Only this module has placeholder implementations.

The important declaration functions from the original parser.rs:

    parse_box_declaration (line 143)

    parse_interface_box_declaration (line 376)

    parse_global_var (line 469)

    parse_function_declaration (line 636)

    parse_static_function_declaration (line 701)

These are currently just placeholder implementations that return an "InvalidStatement" error.

I also need to check if any helper functions from the original parser.rs are missing.

I need to check the important parts of the original parser.rs and implement them in declarations.rs.

● This is a serious discovery! declarations.rs is still a placeholder, and all the important declaration parsing functions are missing 😱 Critical functions:

    parse_box_declaration (the most important!)

    parse_interface_box_declaration (interface declarations)

    parse_global_var (global variable declarations)

    parse_function_declaration (function declarations)

    parse_static_function_declaration (static function declarations - also important!)

I need to confirm the relevant sections in the original parser.rs and re-implement them in declarations.rs.

● Read(src/parser_old.rs)
⎿ Read 70 lines (ctrl+r to expand)

✻ Thinking...

I've confirmed the implementation for function and static function declarations. I need to port these to declarations.rs correctly.

Next, I'll also confirm the implementation for static function and box declarations.

● I'll also confirm the implementation for static function declarations:

● Read(src/parser_old.rs)
⎿ Read 80 lines (ctrl+r to expand)

✻ Thinking...

OK, this is a very important implementation for static function declarations. It's a critical feature that supports the BoxName.FunctionName format (like Math.min).

One more thing I need to check is the most important one: parse_box_declaration. This should be a large and complex implementation.

● I'll check the most important box declaration implementation:

● Read(src/parser_old.rs)
⎿ Read 50 lines (ctrl+r to expand)

✻ Thinking...

This is indeed a serious problem! declarations.rs only has a placeholder, so critical functions are completely missing.

First, I need to port the implementation of the missing key functions from the original parser.rs. I'll use TodoWrite to record the current urgent tasks.

● This was a terrible oversight! Important parser functionality is completely missing 😱 An urgent fix is needed!

The issue was successfully fixed afterward.
Th-that was scary…


This content originally appeared on DEV Community and was authored by CharmPic