Cesium
Cesium copied to clipboard
C compiler for the CLI platform
Consider this valid C program: ```c #if FOO int a = 1; #endif ``` It is expected to generate an empty C file (an undefined variable evaluates to zero). Currently,...
You can quickly reproduce the error by finding TODO[#532] ```csharp #if -20 < 10 ... #endif ```
We should allow the source information to be attached to the AST nodes, and require it in all the error reporting code. ## Depends on - [ ] #525
Historically, the idea of Cesium appeared after we were discussing a possibility of porting code from [sha1collisiondetection](https://github.com/cr-marcstevens/sha1collisiondetection/) project to [Fenrir](https://github.com/ForNeVeR/Fenrir), a project to create a Git client in .NET. So,...
Follow-up from #234: we should support processing of any `IDirectAbstractDeclarator` in `LocalDeclarationInfo::ProcessDirectAbstractDeclarator`. Look for the number `332` in our code when looking how to implement this feature.
In `BinaryOperatorExpression::LowerPointerArithmetics`, we are trying to essentially multiply the pointer operands by pointer size. Note that the expressions still keep the same pointer type. This means that: 1. Initial arithmetics...
For now, we have somewhat messed up pipeline: the IR nodes do all by themselves. Type checking, member resolve, lowering, codegen: we have everything everywhere. Right now, only parsing is...
Take almost any code that works with arrays, for example, `CodeGenArrayTests.ArrayInitialization`, and you'll notice that Cesium leaves a useless `conv.u` instruction often. And none of those are actually needed, or...
See this snippet: https://github.com/ForNeVeR/Cesium/blob/532fbec3dcae1d5084971ab440f0ae865146d199/Cesium.CodeGen/Contexts/TranslationUnitContext.cs#L186-L196 From this, it looks like we use an empty struct (with no members) as a placeholder for a forward declaration, or something similar. Empty structs is...