Search in sources :

Example 1 with VarUse

use of org.abs_models.frontend.ast.VarUse in project abstools by abstools.

the class DeadlockPreanalysis method processAwait.

private void processAwait(AwaitStmt await, int position, ASTNode<?> node) {
    String varAwait = null;
    if (await.getGuard().getChild(0) instanceof VarUse) {
        varAwait = ((VarUse) await.getGuard().getChild(0)).getName();
    }
    int getPos = position + 1;
    GetExp getInst = null;
    if (varAwait != null) {
        while (getPos < node.getNumChild() && getInst == null) {
            getInst = lookforGetOperation(await, node.getChild(getPos), varAwait);
            if (getInst == null) {
                getPos++;
            }
        }
    }
    // System.out.println("PROCESANDO " + position + " " + getPos);
    boolean used = false;
    for (int i = position + 1; i < getPos && !used; i++) {
        used = isVarUsed(node.getChild(i), varAwait);
    }
    if (used && getInst != null) {
        getExpressions.put((GetExp) getInst, null);
    }
}
Also used : GetExp(org.abs_models.frontend.ast.GetExp) VarUse(org.abs_models.frontend.ast.VarUse)

Example 2 with VarUse

use of org.abs_models.frontend.ast.VarUse in project abstools by abstools.

the class VarResolutionTest method testNestedLetExp5.

@Test
public void testNestedLetExp5() {
    Model m = assertParse("def Bool f(Bool b) = let (Bool x) = b in let (Bool x) = x in x;");
    LetExp e = (LetExp) getFirstFunctionExpr(m);
    LetExp e2 = (LetExp) e.getExp();
    VarOrFieldDecl decl = e.getVar();
    VarUse u = (VarUse) e2.getVal();
    assertEquals(decl, u.getDecl());
}
Also used : VarOrFieldDecl(org.abs_models.frontend.ast.VarOrFieldDecl) LetExp(org.abs_models.frontend.ast.LetExp) Model(org.abs_models.frontend.ast.Model) VarUse(org.abs_models.frontend.ast.VarUse) FrontendTest(org.abs_models.frontend.FrontendTest) Test(org.junit.Test)

Example 3 with VarUse

use of org.abs_models.frontend.ast.VarUse in project abstools by abstools.

the class VarResolutionTest method testNestedLetExp2.

@Test
public void testNestedLetExp2() {
    Model m = assertParse(" def Bool f(Bool b) = let (Bool x) = let (Bool x) = b in x in x;");
    LetExp e = (LetExp) getFirstFunctionExpr(m);
    VarOrFieldDecl decl = e.getVar();
    VarUse u = (VarUse) e.getExp();
    assertEquals(decl, u.getDecl());
}
Also used : VarOrFieldDecl(org.abs_models.frontend.ast.VarOrFieldDecl) LetExp(org.abs_models.frontend.ast.LetExp) Model(org.abs_models.frontend.ast.Model) VarUse(org.abs_models.frontend.ast.VarUse) FrontendTest(org.abs_models.frontend.FrontendTest) Test(org.junit.Test)

Example 4 with VarUse

use of org.abs_models.frontend.ast.VarUse in project abstools by abstools.

the class VarResolutionTest method testFunctionParam.

@Test
public void testFunctionParam() {
    Model m = assertParse(" def Bool f(Bool b) = b;");
    VarUse u = (VarUse) getFirstFunctionExpr(m);
    ParamDecl d = (ParamDecl) u.getDecl();
    assertEquals("b", d.getName());
}
Also used : ParamDecl(org.abs_models.frontend.ast.ParamDecl) Model(org.abs_models.frontend.ast.Model) VarUse(org.abs_models.frontend.ast.VarUse) FrontendTest(org.abs_models.frontend.FrontendTest) Test(org.junit.Test)

Example 5 with VarUse

use of org.abs_models.frontend.ast.VarUse in project abstools by abstools.

the class VarResolutionTest method testNestedLetExp3.

@Test
public void testNestedLetExp3() {
    Model m = assertParse(" def Bool f(Bool b) = let (Bool x) = b in let (Bool y) = b in x;");
    LetExp e = (LetExp) getFirstFunctionExpr(m);
    LetExp e2 = (LetExp) e.getExp();
    VarOrFieldDecl decl = e.getVar();
    VarUse u = (VarUse) e2.getExp();
    assertEquals(decl, u.getDecl());
}
Also used : VarOrFieldDecl(org.abs_models.frontend.ast.VarOrFieldDecl) LetExp(org.abs_models.frontend.ast.LetExp) Model(org.abs_models.frontend.ast.Model) VarUse(org.abs_models.frontend.ast.VarUse) FrontendTest(org.abs_models.frontend.FrontendTest) Test(org.junit.Test)

Aggregations

VarUse (org.abs_models.frontend.ast.VarUse)18 FrontendTest (org.abs_models.frontend.FrontendTest)9 Test (org.junit.Test)9 LetExp (org.abs_models.frontend.ast.LetExp)8 Model (org.abs_models.frontend.ast.Model)8 VarOrFieldDecl (org.abs_models.frontend.ast.VarOrFieldDecl)7 DataTypeUse (org.abs_models.frontend.ast.DataTypeUse)3 MainBlock (org.abs_models.frontend.ast.MainBlock)3 ParamDecl (org.abs_models.frontend.ast.ParamDecl)3 ParametricDataTypeUse (org.abs_models.frontend.ast.ParametricDataTypeUse)3 Block (org.abs_models.frontend.ast.Block)2 FnApp (org.abs_models.frontend.ast.FnApp)2 GetExp (org.abs_models.frontend.ast.GetExp)2 List (org.abs_models.frontend.ast.List)2 MethodSig (org.abs_models.frontend.ast.MethodSig)2 NegExp (org.abs_models.frontend.ast.NegExp)2 PatternVarDecl (org.abs_models.frontend.ast.PatternVarDecl)2 PureExp (org.abs_models.frontend.ast.PureExp)2 TypeUse (org.abs_models.frontend.ast.TypeUse)2 VarDecl (org.abs_models.frontend.ast.VarDecl)2