MCPcopy Create free account
hub / github.com/GaijinEntertainment/daScript / ast_globalLetList

Function ast_globalLetList

src/parser/parser_impl.cpp:522–565  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

520 }
521
522 void ast_globalLetList ( yyscan_t scanner, bool kwd_let, bool glob_shar, bool pub_var, vector<VariableDeclaration*> * list ) {
523 for ( auto pDecl : *list ) {
524 if ( pDecl->pTypeDecl ) {
525 for ( const auto & name_at : *pDecl->pNameList ) {
526 VariablePtr pVar = new Variable();
527 pVar->name = name_at.name;
528 pVar->aka = name_at.aka;
529 if ( !name_at.aka.empty() ) {
530 das_yyerror(scanner,"global variable " + name_at.name + " can't have an aka",name_at.at,
531 CompilationError::invalid_global_aka);
532 }
533 pVar->at = name_at.at;
534 if ( pDecl->pNameList->size()>1 ) {
535 pVar->type = new TypeDecl(*pDecl->pTypeDecl);
536 } else {
537 pVar->type = pDecl->pTypeDecl; pDecl->pTypeDecl = nullptr;
538 }
539 if ( pDecl->pInit ) {
540 if ( pDecl->pNameList->size()>1 ) {
541 pVar->init = pDecl->pInit->clone();
542 } else {
543 pVar->init = pDecl->pInit; pDecl->pInit = nullptr;
544 }
545 pVar->init_via_move = pDecl->init_via_move;
546 pVar->init_via_clone = pDecl->init_via_clone;
547 }
548 if ( kwd_let ) {
549 pVar->type->constant = true;
550 } else {
551 pVar->type->removeConstant = true;
552 }
553 pVar->global_shared = glob_shar;
554 pVar->private_variable = !pub_var;
555 if ( pDecl->annotation ) {
556 pVar->annotation = *pDecl->annotation;
557 }
558 if ( !yyextra->g_Program->addVariable(pVar) )
559 das_yyerror(scanner,"global variable is already declared " + name_at.name,name_at.at,
560 CompilationError::already_declared_global);
561 }
562 }
563 }
564 deleteVariableDeclarationList(list);
565 }
566
567 void ast_globalBitfieldConst ( yyscan_t scanner, const TypeDeclPtr & bType, bool pub_var, const string & name, Expression * expr ) {
568 auto pVar = new Variable();

Callers 3

yyparseFunction · 0.85
yyparseFunction · 0.85
yyparseFunction · 0.85

Calls 6

das_yyerrorFunction · 0.70
emptyMethod · 0.45
sizeMethod · 0.45
cloneMethod · 0.45
addVariableMethod · 0.45

Tested by

no test coverage detected