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

rieske / trans / 34367686662
95%

Build:
DEFAULT BRANCH: master
Ran 09 Sep 2026 03:11PM UTC
Jobs 1
Files 272
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

09 Sep 2026 03:03PM UTC coverage: 94.591% (+0.1%) from 94.469%
34367686662

push

github

web-flow
Reject non-scalar controlling expressions; fix enumerator scope (#315)

* fix: reject non-scalar controlling expressions

if, while, for, do-while, ?: and ! each accepted a struct or union where C
requires a scalar. They already shared the same shape, so they now share one
check that decays arrays and function designators before testing the type,
rather than gaining a sixth hand-placed gate.

The conditional operator checked its condition only when both arms had also
produced result symbols, so a struct condition went undiagnosed and then
crashed the compiler; the condition's validity does not depend on the arms.

* fix: an enumerator hides an ordinary name declared further out

A block-scope enumerator did not shadow a file-scope object or function:
`int A = 7; int main(){ enum { A = 1 }; return A; }` returned 7, and the
same shape over a function was rejected outright. Semantic analysis decided
between an ordinary symbol and a parse-time enumerator fold by kind, always
preferring the symbol, where C decides by which declaration is nearer.

Enumerator declarations never reached semantic analysis at all: the enum
reductions recorded values on the lexical session and built no node, and the
block frames holding them are popped before analysis starts. They now travel
on the type specifier that defines them and are entered into the symbol table
in the scope that holds it, so the innermost declaration wins by construction
rather than by comparing depths across two tables.

Parse-time typing keeps its own lookup, but a name that is both an object and
an enumerator there is left unresolved for semantic analysis to decide, so
__typeof__ no longer picks a shadowed outer object.

* fix: apply the scalar rule to casts, && and ||, and to void values

A void-valued expression carries no type at all, so the scalar check passed
it through and the missing Result annotation surfaced later as an internal
compiler error with no source location. `if (v())`, `while (v())`... (continued)

16019 of 16935 relevant lines covered (94.59%)

154426.11 hits per line

Coverage Regressions

Lines Coverage ∆ File
25
94.82
0.74% home/runner/work/trans/trans/src/semantic_analyzer/SemanticAnalysisVisitor_Expressions.cpp
23
92.36
0.1% home/runner/work/trans/trans/src/types/TypeQuery.h
21
92.86
0.53% home/runner/work/trans/trans/src/semantic_analyzer/SemanticAnalysisVisitor.cpp
8
98.56
-0.15% home/runner/work/trans/trans/src/ast/ContextualSyntaxNodeBuilder.cpp
8
94.09
0.01% home/runner/work/trans/trans/src/ast/CSNB_Creators.cpp
8
93.29
0.21% home/runner/work/trans/trans/src/ast/DeclarationSpecifiers.cpp
8
93.62
-0.22% home/runner/work/trans/trans/src/semantic_analyzer/SemanticAnalysisVisitor_Statements.cpp
6
82.14
-10.71% home/runner/work/trans/trans/src/ast/ConditionalExpression.cpp
6
95.82
0.02% home/runner/work/trans/trans/src/codegen/CodeGeneratingVisitor.cpp
5
61.9
4.01% home/runner/work/trans/trans/src/ast/TypeNameExpression.cpp
3
89.47
-7.89% home/runner/work/trans/trans/src/ast/FormalArgument.cpp
2
97.59
-0.03% home/runner/work/trans/trans/src/scanner/LexicalSession.h
2
97.62
4.47% home/runner/work/trans/trans/src/semantic_analyzer/SemanticAnalysisVisitorInternal.h
2
97.71
0.18% home/runner/work/trans/trans/src/semantic_analyzer/SymbolTable.cpp
2
97.56
-1.07% home/runner/work/trans/trans/src/semantic_analyzer/ValueScope.cpp
2
95.74
-2.03% home/runner/work/trans/trans/src/types/TypeQuery.cpp
1
96.51
-1.08% home/runner/work/trans/trans/src/codegen/FrameLayout.cpp
1
98.39
-1.61% home/runner/work/trans/trans/src/scanner/EnumConstantRegistry.cpp
1
88.89
-1.11% home/runner/work/trans/trans/src/semantic_analyzer/SemanticAnalysisVisitor.h
Jobs
ID Job ID Ran Files Coverage
1 34367686662.1 09 Sep 2026 03:11PM UTC 272
94.59
GitHub Action Run
Source Files on build 34367686662
  • Tree
  • List 272
  • Changed 35
  • Source Changed 0
  • Coverage Changed 35
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #34367686662
  • 694a7068 on github
  • Prev Build on master (#34321877785)
  • Next Build on master (#34371063106)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc