Conversation
| @@ -1,2 +1,3 @@ | |||
| *~ | |||
| *.pyc | |||
| flycheck_* No newline at end of file | |||
There was a problem hiding this comment.
This addition was because I got real tired of my rg taking me into files fisketur flycheck created, and adding a flycheck_* filter was the easiest way to avoid that. We may or may not want this in.
| method ms(int i) -> (string) throws { | ||
| if (i > 4) throw; | ||
| return mk_string_f("%d", i); | ||
| } |
There was a problem hiding this comment.
Artifact, I moved the test using this method to 1.4/types/raii/T_various.
|
Verification #12261598: fail |
| class Orphan(Expression): | ||
| """Expressions that evaluate to a value that is allocated on the stack, but | ||
| not belonging to any local variable. Archetypical example are function | ||
| applications.""" |
There was a problem hiding this comment.
This description was written in a better time when orphans were directly tied to C concepts. What they are nowadays are not so simple (Expression.orphan has the better description)
Besides the obvious (RAII architecture, vectors, strings), this includes:
1. `cast(initializer, ...)` syntax, and rework of associated logic
3. As a result of the above, compound literals. `cast({1,2,3}, int[3])` is now supported.
4. `a += initializer` syntax, and rework of associated logic. This means complex method calls can be used as RHS of `+=`/`-=`/etc.
5. Reworked statements' `toc`/`toc_inline` family
6. ExpressionInitializer.assign_to and Expression.write rework
7. The addition of "addressable" and "c_lval" to Expression, and an associated rework of lvalue-ness
8. Strict `DMLType.cmp`. Old implementation is still used in a few places and is called `cmp_fuzzy`
9. The ability to hash DML Types in a way compatible with the new strict cmp.
10. `extern cident(blabla) as dmlident;`.
11. Improved deserialization logic for arrays; doesn't need a stack frame per dimension
|
Verification run featuring incompatibility patch (#217): https://teamcity01-ir.devtools.intel.com/viewQueued.html?itemId=12292226 |
|
Verification without incompatibility: https://teamcity01-ir.devtools.intel.com/viewQueued.html?itemId=12292197 |
Taken from #213, but with some refinements
Taken from #213, but with some refinements
Taken from #213, but with some refinements
Taken from #213, but with some refinements
Taken from #213, but with some refinements
Taken from #213, but with some refinements
Taken from #213, but with some refinements
Taken from #213, but with some refinements
Taken from #213, but with some refinements
Taken from #213, but with some refinements
Taken from #213, but with some refinements
Taken from #213, but with some refinements
Besides the obvious (RAII architecture, vectors, strings), this includes:
cast(initializer, ...)syntax, and rework of associated logiccast({1,2,3}, int[3])is now supported.a += initializersyntax, and rework of associated logic. This means complex method calls can be used as RHS of+=/-=/etc.toc/toc_inlinefamilyDMLType.cmp. Old implementation is still used in a few places and is calledcmp_fuzzyextern cident(blabla) as dmlident;.This is a draft PR as it is way too massive to be merged in as-is. We should decide upon what we should split and how.
In addition, the tests in this PR are too basic -- they are touch-ups of the ad-hoc tests I made while working on this. They are not sufficient to e.g. exhaustively test the semantics of strings and vectors -- vectors in particular have some very complicated logic attached to them.
You'll spot a number of
TODO(RAII)s in the implementation -- these represent particular question marks where I feel the implementation could potentially be improved, rather than unimplemented components -- this PR is feature complete.