Lines Matching refs:gensym
79 auto [gensym, tmpVar] = GenerateSymbol(tupleTypeAtIdx_);
82 // make node: let gensym = tuple[n] as <tuple type at index n>;
85 gensym, gensymTsAs, lexer::TokenType::PUNCTUATOR_SUBSTITUTION);
88 // make node: let gensym2 = (gensym)++;
89 auto *identClone = gensym->Clone(checker_->Allocator(), nullptr);
97 // make node: tuple[n] = (gensym as <tuple type at index n>) as <tuple element_type>;
98 identClone = gensym->Clone(checker_->Allocator(), nullptr);
128 auto *gensym = Gensym(checker_->Allocator());
130 checker_->Allocator(), gensym->Name(), varbinder::VariableFlags::LOCAL);
132 gensym->SetVariable(tmpVar);
133 gensym->SetTsType(tmpVar->TsType());
134 return std::make_tuple(gensym, tmpVar);
166 // let gensym = tuple[n] as <tuple type at index n>; // line 1
167 // let gensym2 = (gensym)++; // line 2
168 // tuple[n] = (gensym as <tuple type at index n>) as <tuple element_type>; // line 3
176 // At line 3 the double as expression is needed. If we simply write `gensym as <tuple type at index n>`, then a
177 // boxing flag may be put on the `gensym` identifier node. It'll be boxed in 'line 2' instead of 'line 3', which
178 // cause error. If we put another as expression inside (which won't do any conversion, because the type of `gensym`