示例#1
0
  // _MYMACRO_ myType foo();
  // _MYMACRO_ myType foo() {}
  // extern void foo2() _MYMACRO_;
  public void testUndefinedMacrosInFunctionDeclarations_Bug234085() throws Exception {
    final String comment = getAboveComment();
    for (ParserLanguage lang : ParserLanguage.values()) {
      IASTTranslationUnit tu = parse(comment, lang, false, false);
      IASTProblemDeclaration pd = getDeclaration(tu, 0);
      assertEquals("_MYMACRO_", pd.getRawSignature());
      IASTSimpleDeclaration sdecl = getDeclaration(tu, 1);
      assertEquals("myType foo();", sdecl.getRawSignature());

      pd = getDeclaration(tu, 2);
      assertEquals("_MYMACRO_", pd.getRawSignature());
      IASTFunctionDefinition fdef = getDeclaration(tu, 3);
      assertEquals("myType foo() {}", fdef.getRawSignature());

      sdecl = getDeclaration(tu, 4);
      assertEquals("extern void foo2()", sdecl.getRawSignature());
      pd = getDeclaration(tu, 5); // the missing semicolon

      if (lang == ParserLanguage.CPP) {
        pd = getDeclaration(tu, 6);
        assertEquals("_MYMACRO_;", pd.getRawSignature());
      } else {
        sdecl = getDeclaration(tu, 6);
        assertEquals("_MYMACRO_;", sdecl.getRawSignature());
      }
    }
  }
示例#2
0
 // typedef int tint;
 // int a()
 // tint b;
 public void testPrototypeWithoutSemi() throws Exception {
   final String comment = getAboveComment();
   for (ParserLanguage lang : ParserLanguage.values()) {
     IASTTranslationUnit tu = parse(comment, lang, false, false);
     IASTSimpleDeclaration sdecl = getDeclaration(tu, 1);
     assertEquals("int a()", sdecl.getRawSignature());
     IASTProblemDeclaration pdecl = getDeclaration(tu, 2);
     sdecl = getDeclaration(tu, 3);
   }
 }
示例#3
0
 // class A {
 //    enum _T { I J, K }; // missing comma
 //    int i;
 // };
 public void testEnumError_Bug72685() throws Exception {
   final String comment = getAboveComment();
   IASTTranslationUnit tu = parse(comment, ParserLanguage.CPP, false, false);
   IASTCompositeTypeSpecifier ct = getCompositeType(tu, 0);
   IASTSimpleDeclaration e = getDeclaration(ct, 0);
   IASTProblemDeclaration p = getDeclaration(ct, 1);
   assertEquals("J, K };", p.getRawSignature());
   IASTSimpleDeclaration s = getDeclaration(ct, 2);
   assertEquals("int i;", s.getRawSignature());
 }
示例#4
0
 // enum _T { I J, K }; // missing comma
 // int i;
 public void testEnumProblem() throws Exception {
   final String comment = getAboveComment();
   for (ParserLanguage lang : ParserLanguage.values()) {
     IASTTranslationUnit tu = parse(comment, lang, false, false);
     IASTSimpleDeclaration e = getDeclaration(tu, 0);
     IASTProblemDeclaration p = getDeclaration(tu, 1);
     assertEquals("J, K };", p.getRawSignature());
     IASTSimpleDeclaration s = getDeclaration(tu, 2);
     assertEquals("int i;", s.getRawSignature());
   }
 }