• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

KarpelesLab / goro / 26391575478
13%

Build:
DEFAULT BRANCH: master
Ran 25 May 2026 08:39AM UTC
Jobs 1
Files 398
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

25 May 2026 08:38AM UTC coverage: 12.556% (+0.03%) from 12.531%
26391575478

push

github

MagicalTux
vm: lower \$obj->n++/--, Foo::\$x++/-- inc/dec to OP_INC_DEC_OBJ/STATIC_PROP

Inc/dec on object and static properties were delegated to the AST
runner via emitAssignViaAST. They now lower to two dedicated opcodes
mirroring the OBJECT_COMPOUND_ASSIGN / STATIC_PROP_COMPOUND_ASSIGN
pattern just landed:

OP_INC_DEC_OBJ_PROP encoding:
  A = const-pool prop-name index (ZString)
  B bit 0 = inc (1) vs dec (0)
  B bit 1 = post (1) vs pre (0)
  C bit 0 = keep-value-on-stack (expr ctx)
Stack: pops receiver. Reads cur via objectGet, applies
compiler.DoInc (string-increment, NULL->1), writes back via
objectSet. Pushes pre/post-mutation value when keep-flag is set.

OP_INC_DEC_STATIC_PROP — same encoding, pops class-source. Read +
write through EvalClassStaticVarRead / AssignClassStaticProp.

Only the static-name, non-nullsafe shape goes native; dynamic-name
\$obj->{\$x}++ and nullsafe \$obj?->prop++ are not valid as ++/-- targets
in PHP, but the emit still falls back to AST for parity. Array
\$arr[\$k]++ continues to delegate.

Verified locally:
  - \$f->n++/--, ++/--\$f->n stmt and expr ctx (10 -> 11 -> 12 -> …)
  - Foo::\$s++/--, ++/--Foo::\$s stmt and expr ctx
  - LSB: static::\$cnt++ inside method picks up the called class
    (P::bump() bumps P::\$cnt, C::bump() bumps C::\$cnt)
  - typed props (int) keep their declared type after ++
  - existing \$obj->prop += test still passes

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

100 of 136 new or added lines in 3 files covered. (73.53%)

50 existing lines in 4 files now uncovered.

14911 of 118753 relevant lines covered (12.56%)

2574.43 hits per line

Uncovered Changes

Lines Coverage ∆ File
22
58.82
0.35% core/vm/vm.go
9
67.7
0.89% core/vm/vmcompiler/emit_object.go
5
62.76
0.64% core/vm/vmcompiler/emit_expr.go

Coverage Regressions

Lines Coverage ∆ File
26
21.63
-1.46% core/compiler/run-operator.go
9
21.95
-0.43% core/compiler/compile-object.go
8
9.84
-0.98% core/compiler/compile-classref.go
7
13.25
-0.27% core/phpobj/zclass.go
Jobs
ID Job ID Ran Files Coverage
1 26391575478.1 25 May 2026 08:39AM UTC 398
12.56
GitHub Action Run
Source Files on build 26391575478
  • Tree
  • List 398
  • Changed 8
  • Source Changed 4
  • Coverage Changed 8
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26391575478
  • fc96192d on github
  • Prev Build on master (#26391453745)
  • Next Build on master (#26391790448)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc