ma
marcoroth
GitHub
herb
Workspace
GitHub
CI Pipeline Executions
Current execution
Succeeded
analysis/derived-state
Runs and Agents
Configuration
Self-Healing CI
Project Graph
Circular Dependencies
Enterprise
Resource Usage
Analysis
Conformance
Enterprise
Runs
Current run
Succeeded
Tasks
Resource Usage
Insights
Compare tasks
Analytics
Sign in
Toggle sidebar
Analysis: Follow state into the locals it is assigned to A template reads state and then names it something else. `<% total = @items.size %>` puts `@items` in `total`, and `<%= total %>` was attributed to nothing, so changing `@items` looked like it touched one node when it decides two. This is the same shape as a block parameter, which carries state under another name for as long as its block is open, and it is bound the same way. A local carries whatever its right hand side reads, which makes chains work without anything extra: `a = @items.size` then `b = a * 2` puts both `a` and `b` in reach of `@items`. Only the right hand side counts, so `@items == other` binds nothing, since a comparison assigns nothing. Scope is the block that made the assignment. A local first assigned inside a block is gone when the block closes, the way Ruby has it, so an alias set is snapshotted on entry and restored on exit instead of subtracting what was added. A partial's declared locals are its state, and `dependency_index` enumerated only instance variables and constants, so asking what a partial's `query` reaches returned nothing at all. They are enumerated now. All three languages, with the same five templates asserted in each. Rust and TypeScript reach the assignment through the prism node they already carry, and slice the right hand side by the offsets it gives them.
nx build @herb-tools/tailwind-class-sorter
⌘K
Succeeded
nx build @herb-tools/tailwind-class-sorter
Click to copy
Linux
2 CPU cores
f4a9df37
2289