Git Product home page Git Product logo

coberec's People

Contributors

dependabot[bot] avatar exyi avatar vakabus avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

coberec's Issues

Add helper for `for` cycle

  • Classic for - for(Init; Cond; Body1) { Body2 }
  • int/long incremental cycle for - for(var i = 0; i < len; i++) { Body }
  • int/long decrement long for - for(var i = len; i >= 0; i--) { Body }

Add support for lock files for the automatic symbol renaming

Automatic symbol renaming may change existing symbol names when the code is re-regenerated. We should introduce a simple key-value lock file, that will force the code generator name the symbols specifically to prevent breaking changes in a generated API.

Add support for attributes

We need to add attributes field to every MemberDefinition + add a method to MetadataContext to add assembly attributes.

Support for dynamic keyword.

No idea how, and probably not a big deal. Can be emulated by emitting the dynamic code with [Dynamic] attribute

Add support for checked/unchecked arithmetics

Currently, we just use what the project is set to use.

The best way is probably to introduce a Checked/Unchecked blocks that will override the default inside of them. The alternative is to put a flag to the BinaryOperatorExpression

Add support for typeof

Probably best done though ConstantExpression supporting TypeReference, SpecializedType, TypeSignature and the System.Reflection.Type itself.

Add helper for `foreach` cycle.

Probably best to be implemented through lowerable expression with a rewriting pass - for the omision of IEnumerable<T> boxing

Add support for type `is` and `as`

The best way is probably to add a flag to ReferenceConversionExpression specifying if it should throw exception or return null - i.e. behave as cast or behave as the as keyword.

Enforce that constructor always calls `base()`

Currently, when an empty constructor is declared it does not even call the base(), which is done implicitly by C#. We should add a validation step that will ensure that there is exactly one base() invocation. Maybe, we can add the call implicitly, if there is none.

Add support for try/catch/finally block

type ExceptionCatchExpression {
   body: Expression
   exceptionParameter: ParameterExpression
   filter: Expression # C# when clause
   catch: Expression
}

type FinallyExpression {
   body: Expression
   finally: Expression
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.