| 16 | }; |
| 17 | |
| 18 | struct VariableNameAndPosition { |
| 19 | string name; |
| 20 | string aka; |
| 21 | LineInfo at; |
| 22 | ExpressionPtr tag = nullptr; |
| 23 | bool isTupleExpansion = false; |
| 24 | VariableNameAndPosition ( const string & n, const string & a, const LineInfo & At, Expression * t = nullptr ) |
| 25 | : name(n), aka(a), at(At), tag(t) {} |
| 26 | VariableNameAndPosition ( vector<string> * n, const LineInfo & At ) { |
| 27 | isTupleExpansion = true; |
| 28 | TextWriter ss; |
| 29 | bool first = true; |
| 30 | for ( auto & na : *n ) { |
| 31 | if ( first ) first = false; else ss << "`"; |
| 32 | ss << na; |
| 33 | } |
| 34 | name = ss.str(); |
| 35 | at = At; |
| 36 | delete n; |
| 37 | } |
| 38 | }; |
| 39 | |
| 40 | struct VariableDeclaration { |
| 41 | VariableDeclaration ( vector<string> * n, const LineInfo & at, TypeDecl * t, Expression * i ) |
no outgoing calls
no test coverage detected