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());
}
示例#2
0
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);
    }