TEST_F(UnifiedVarRenamerTests, WhenUseDebugNamesIsFalseDoNotUseDebugNames) { // Set-up the module. // // int g; // from debug info // int h; // // void test(int p, int m) { // p has name from debug info // int a; // int b; // from debug info // } // ShPtr<Variable> varG(Variable::create("g", IntType::create(32))); module->addGlobalVar(varG); module->addDebugNameForVar(varG, varG->getName()); ShPtr<Variable> varH(Variable::create("h", IntType::create(32))); module->addGlobalVar(varH); ShPtr<Variable> varP(Variable::create("p", IntType::create(32))); testFunc->addParam(varP); module->addDebugNameForVar(varP, varP->getName()); ShPtr<Variable> varM(Variable::create("m", IntType::create(32))); testFunc->addParam(varM); ShPtr<Variable> varA(Variable::create("a", IntType::create(32))); testFunc->addLocalVar(varA); ShPtr<Variable> varB(Variable::create("b", IntType::create(32))); testFunc->addLocalVar(varB); module->addDebugNameForVar(varB, varB->getName()); ShPtr<VarDefStmt> varDefB(VarDefStmt::create(varB)); ShPtr<VarDefStmt> varDefA(VarDefStmt::create(varA, ShPtr<Expression>(), varDefB)); testFunc->setBody(varDefA); // Setup the renamer (do not use debug names). INSTANTIATE_VAR_NAME_GEN_AND_VAR_RENAMER(UnifiedVarRenamer, false); // Do the renaming. varRenamer->renameVars(module); // We expect the following output: // // int g1; // int g2; // // void test(int a1, int a2) { // int v1; // int v2; // } // // Globals: VarSet globalVarsSet(module->getGlobalVars()); ASSERT_EQ(2, globalVarsSet.size()); // We have to sort the variables to ease the checking. VarVector globalVarsVector(globalVarsSet.begin(), globalVarsSet.end()); sortByName(globalVarsVector); ShPtr<Variable> var1(globalVarsVector[0]); EXPECT_EQ("g1", var1->getName()); ShPtr<Variable> var2(globalVarsVector[1]); EXPECT_EQ("g2", var2->getName()); // Parameters: VarVector params(testFunc->getParams()); ASSERT_EQ(2, params.size()); ShPtr<Variable> par1(params.front()); EXPECT_EQ("a1", par1->getName()); ShPtr<Variable> par2(params.back()); EXPECT_EQ("a2", par2->getName()); // Locals: EXPECT_EQ("v1", varDefA->getVar()->getName()); EXPECT_EQ("v2", varDefB->getVar()->getName()); }
int tee_para( void ) { int r; switch ( tyybinr ) { case 0: /* muutumatu sõna */ return(1); case 1: /* vallatu S 1 */ r = par1(); break; case 2: /* õpik õpiku S 2 */ r = par2(); break; case 3: /* sama, mis case 2: vaher vahtra S 3 */ r = par3(); break; case 4: /* ase aseme S 4 */ r = par4(); break; case 5: /* sama, mis case 4: liige liikme S 5 */ r = par5(); break; case 6: /* mõte mõtte S 6 */ r = par6(); break; case 7: /* sama, mis case 6: hammas hamba S 7 */ r = par7(); break; case 8: /* erineb case 6-st mitmuse tunnuse poolest tütar tütre S 7 */ r = par8(); break; case 9: /* sama, mis case 6: katus katuse S 9 */ r = par9(); break; case 10: /* soolane soolase soolas[t A 10 */ r = par10(); break; case 11: /* harjutus harjutuse S 11 i */ r = par11(); break; case 12: /*oluline olulise olulis[t A 12 i */ r = par12(); break; case 13: /* suur suure suur[te A 13 i */ r = par13(); break; case 14: /* uus uue uu[t uu[te (uusi) A 14 i */ r = par14(); break; case 15: /* käsi käe kä[tt kä[te S 15 */ r = par15(); break; case 16: /* kõne kõnne S 16 */ r = par16(); break; case 17: /* saba sappa S 17 u */ r = par17(); break; case 18: /* sõda sõja sõtta S 18 u */ r = par18(); break; case 19: /* seminar seminari S 19 e */ r = par19(); break; case 20: /* nimi nime (nimme) S 20 */ r = par20(); break; case 21: /* jõgi jõge jõe jõkke S 20 */ r = par21(); break; case 22: /* sepp seppa sepa S 22 i */ r = par22(); break; case 23: /* hein h'eina heina heinte S 23 u */ r = par23(); break; case 24: /* padi patja padja S 24 u */ r = par24(); break; case 25: /* õnnelik õnnelikku õnneliku S 25 e */ r = par25(); break; case 26: /* idee {ee->e[i} S 26 */ r = par26(); break; default: return(0); /* "võimatu" nr */ } if ( !r ) return(0); if ( plural ) { r = eemalda_ainsus(); if ( !r ) return(0); } if ( singular ) { r = eemalda_mitmus(); if ( !r ) return(0); r = eemalda_mitmus(); } return(1); }