Search in sources :

Example 91 with Model

use of abs.frontend.ast.Model in project abstools by abstools.

the class FrontendTest method assertTypeErrors.

/**
 * Check for and return the first error occurring in 'absCode', or null if
 * none found.  If EXPECT_WARNING is set, and EXPECT_TYPE_ERROR is not
 * set, return the first warning instead.  Produces a test failure if
 * 'config' contains EXPECT_TYPE_ERROR but no error found.  Produces a
 * test failure if 'config' contains EXPECT_WARNING but no warning found.
 * @param absCode - the test case source code
 * @param config - flags
 * @return
 */
protected SemanticCondition assertTypeErrors(String absCode, Config... config) {
    Model m = assertParse(absCode, config);
    String msg = "";
    SemanticConditionList l = m.typeCheck();
    if (l.containsErrors()) {
        msg = l.getFirstError().getMsgWithHint(absCode);
    } else if (l.containsWarnings() && isSet(EXPECT_WARNING, config)) {
        msg = l.getFirstWarning().getMsgWithHint(absCode);
    }
    assertEquals(msg, isSet(EXPECT_TYPE_ERROR, config), l.containsErrors());
    if (isSet(EXPECT_WARNING, config)) {
        assertEquals(msg, isSet(EXPECT_WARNING, config), l.containsWarnings());
    }
    return l.containsErrors() ? l.getFirstError() : null;
}
Also used : SemanticConditionList(abs.frontend.analyser.SemanticConditionList) Model(abs.frontend.ast.Model)

Example 92 with Model

use of abs.frontend.ast.Model in project abstools by abstools.

the class DuplicateCheckTest method interfaceDuplicates.

@Test
public void interfaceDuplicates() {
    Model p = assertParseOk("interface I {} interface I {}");
    assertEndsWith(p.typeCheck().getFirstError(), DUPLICATE_TYPE_DECL.withArgs("I", ""));
}
Also used : Model(abs.frontend.ast.Model) Test(org.junit.Test) FrontendTest(abs.frontend.FrontendTest)

Example 93 with Model

use of abs.frontend.ast.Model in project abstools by abstools.

the class DuplicateCheckTest method typeDuplicates2.

@Test
public void typeDuplicates2() {
    Model p = assertParseOk("data D; data X; type D = X;");
    assertEndsWith(p.typeCheck().getFirstError(), DUPLICATE_TYPE_DECL.withArgs("D", ""));
}
Also used : Model(abs.frontend.ast.Model) Test(org.junit.Test) FrontendTest(abs.frontend.FrontendTest)

Example 94 with Model

use of abs.frontend.ast.Model in project abstools by abstools.

the class DuplicateCheckTest method duplicateClasses.

@Test
public void duplicateClasses() {
    Model p = assertParseOk("class C {} class C {}");
    assertEndsWith(p.typeCheck().getFirstError(), DUPLICATE_CLASS_NAME.withArgs("C", ""));
}
Also used : Model(abs.frontend.ast.Model) Test(org.junit.Test) FrontendTest(abs.frontend.FrontendTest)

Example 95 with Model

use of abs.frontend.ast.Model in project abstools by abstools.

the class DuplicateCheckTest method duplicatePartialFunctions.

@Test
public void duplicatePartialFunctions() {
    Model m = assertParseOk("data Test = Test; def Test zero()() = Test; def Test zero()() = Test;");
    assertEndsWith(m.typeCheck().getFirstError(), DUPLICATE_PARTIAL_FUN_NAME.withArgs("zero", ""));
}
Also used : Model(abs.frontend.ast.Model) Test(org.junit.Test) FrontendTest(abs.frontend.FrontendTest)

Aggregations

Model (abs.frontend.ast.Model)224 Test (org.junit.Test)170 FrontendTest (abs.frontend.FrontendTest)93 ClassDecl (abs.frontend.ast.ClassDecl)57 DeltaDecl (abs.frontend.ast.DeltaDecl)30 SemanticConditionList (abs.frontend.analyser.SemanticConditionList)24 FunctionDecl (abs.frontend.ast.FunctionDecl)15 PrintStream (java.io.PrintStream)14 ModifyClassModifier (abs.frontend.ast.ModifyClassModifier)12 SkipStmt (abs.frontend.ast.SkipStmt)11 AbsNature (org.absmodels.abs.plugin.builder.AbsNature)11 ExpFunctionDef (abs.frontend.ast.ExpFunctionDef)9 ModuleDecl (abs.frontend.ast.ModuleDecl)9 CompilationUnit (abs.frontend.ast.CompilationUnit)7 DeltaTraitModifier (abs.frontend.ast.DeltaTraitModifier)7 ModifyMethodModifier (abs.frontend.ast.ModifyMethodModifier)7 PartialFunctionDecl (abs.frontend.ast.PartialFunctionDecl)7 PureExp (abs.frontend.ast.PureExp)7 TraitExpr (abs.frontend.ast.TraitExpr)7 WrongProgramArgumentException (abs.common.WrongProgramArgumentException)6