Giter VIP home page Giter VIP logo

Comments (7)

graphitemaster avatar graphitemaster commented on August 19, 2024

I'd like to also add an "auto" keyword for function syntax, which has the compiler infer the type (if possible). This would be a gmqcc only feature and would error in any other standard.

from gmqcc.

Blub avatar Blub commented on August 19, 2024

Doable. How about 'auto' only for function return-types, and let for variable declarations (or var, see #4, we just need something)

auto foo() {
    let e = self.attacker; // an entity
    e.foocount++;
    return e;
}

Thoughts?
(We should open a separate ticket for this probably)

from gmqcc.

graphitemaster avatar graphitemaster commented on August 19, 2024

My problem with the let keyword is it has a certain instilling characteristic of a typical lambda construct. So using is as a variant type like this seems a bit intrusive (if we have auto hinting the compiler to infer, as well as let). I'd imagine they'd do the same thing anyways.

from gmqcc.

Blub avatar Blub commented on August 19, 2024

Right, the above code should definitely use auto e = self.attacker. However when using struct types which have not yet been declared, auto might not be the best choice. var would just make more sense, and it already exists in original QC.

auto foo() {
    auto e = self.attacker;
    e.foocount++;
    return e;
}
auto foo() {
    var AStruct x = self.somestruct;
    if (x.something) whatever();
} // foo becomes 'void()'

struct AStruct {
    finally the type gets defined
}

from gmqcc.

Blub avatar Blub commented on August 19, 2024

new-syntax branch contains the new implementation - I rewrote the whole field/global parsing code. It's much cleaner and unified. It's not "strict" enough yet though (ie. doesn't error properly on new-style functions with -std=qcc, but it is ready to be merged once we're aiming for 0.2)

from gmqcc.

Blub avatar Blub commented on August 19, 2024

now errors on -std=qcc, and also contains the var keyword to create global field-pointers without creating fields, AND fixes a bug which caused global/local vector field pointers to only have 1 component generated. Now behaves correctly, and fteqcc-compliant, whereas -std=gmqcc autoenabled -fadjust-vector-fields

from gmqcc.

Blub avatar Blub commented on August 19, 2024

Closing this - keep in mind it's not merged to master yet.

from gmqcc.

Related Issues (20)

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.