1414// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1515// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1616// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19- // SOFTWARE.
17+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18+ // FRnewOM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
19+ // DEALINGS IN THE SOFTWARE.
2020
2121#include < cxx/parser.h>
2222
@@ -6726,6 +6726,7 @@ auto Parser::parse_init_declarator(InitDeclaratorAST*& yyast,
67266726auto Parser::parse_init_declarator (InitDeclaratorAST*& yyast,
67276727 DeclaratorAST* declarator, Decl& decl)
67286728 -> bool {
6729+ Symbol* declaredSynbol = nullptr ;
67296730 if (auto declId = decl.declaratorId ; declId) {
67306731 auto symbolType = GetDeclaratorType{this }(declarator, decl.specs .getType ());
67316732 const auto name = convertName (declId->unqualifiedId );
@@ -6735,22 +6736,26 @@ auto Parser::parse_init_declarator(InitDeclaratorAST*& yyast,
67356736 symbol->setName (name);
67366737 symbol->setType (symbolType);
67376738 std::invoke (DeclareSymbol{this , scope_}, symbol);
6739+ declaredSynbol = symbol;
67386740 } else if (getFunctionPrototype (declarator)) {
67396741 auto functionSymbol =
67406742 control_->newFunctionSymbol (scope_, decl.location ());
67416743 applySpecifiers (functionSymbol, decl.specs );
67426744 functionSymbol->setName (name);
67436745 functionSymbol->setType (symbolType);
67446746 std::invoke (DeclareSymbol{this , scope_}, functionSymbol);
6747+ declaredSynbol = functionSymbol;
67456748 } else {
67466749 auto symbol = control_->newVariableSymbol (scope_, decl.location ());
67476750 applySpecifiers (symbol, decl.specs );
67486751 symbol->setName (name);
67496752 symbol->setType (symbolType);
67506753 std::invoke (DeclareSymbol{this , scope_}, symbol);
6754+ declaredSynbol = symbol;
67516755 }
67526756 }
67536757 }
6758+
67546759 RequiresClauseAST* requiresClause = nullptr ;
67556760 ExpressionAST* initializer = nullptr ;
67566761
@@ -6765,6 +6770,7 @@ auto Parser::parse_init_declarator(InitDeclaratorAST*& yyast,
67656770 ast->declarator = declarator;
67666771 ast->requiresClause = requiresClause;
67676772 ast->initializer = initializer;
6773+ ast->symbol = declaredSynbol;
67686774
67696775 return true ;
67706776}
0 commit comments