View | Details | Raw Unified | Return to bug 158192 | Differences between
and this patch

Collapse All | Expand All

(-)parser/org/eclipse/cdt/core/parser/tests/ast2/CompleteParser2Tests.java (-1 / +59 lines)
Lines 61-66 Link Here
61
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace;
61
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace;
62
import org.eclipse.cdt.core.dom.ast.cpp.ICPPReferenceType;
62
import org.eclipse.cdt.core.dom.ast.cpp.ICPPReferenceType;
63
import org.eclipse.cdt.core.dom.ast.cpp.ICPPUsingDeclaration;
63
import org.eclipse.cdt.core.dom.ast.cpp.ICPPUsingDeclaration;
64
import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable;
64
import org.eclipse.cdt.core.parser.CodeReader;
65
import org.eclipse.cdt.core.parser.CodeReader;
65
import org.eclipse.cdt.core.parser.IScanner;
66
import org.eclipse.cdt.core.parser.IScanner;
66
import org.eclipse.cdt.core.parser.NullLogService;
67
import org.eclipse.cdt.core.parser.NullLogService;
Lines 2575-2580 Link Here
2575
    	writer.write("#define A( a, b ) a ## b               \n"); //$NON-NLS-1$
2576
    	writer.write("#define A( a, b ) a ## b               \n"); //$NON-NLS-1$
2576
    	writer.write("#define FOOBAR 1                       \n"); //$NON-NLS-1$
2577
    	writer.write("#define FOOBAR 1                       \n"); //$NON-NLS-1$
2577
    	writer.write("int i = A( FOO, BAR );                 \n"); //$NON-NLS-1$
2578
    	writer.write("int i = A( FOO, BAR );                 \n"); //$NON-NLS-1$
2578
    	parse( writer.toString() );
2579
    	parse( writer.toString(), true, ParserLanguage.CPP );
2580
    }
2581
    
2582
    public void test158192_declspec_on_class() throws Exception {
2583
    	Writer writer = new StringWriter();
2584
    	writer.write("class __declspec(foobar) Foo1 {};\n");
2585
    	writer.write("union __declspec(foobar) Foo2 {};\n");
2586
    	writer.write("struct __declspec(foobar) Foo3 {};\n");
2587
    	IASTTranslationUnit tu = parse( writer.toString(), true, ParserLanguage.CPP, true );
2588
    	
2589
    	CPPNameCollector col = new CPPNameCollector();
2590
 		tu.accept( col );
2591
 		
2592
 		assertEquals( 3, col.size());
2593
 		ICompositeType fooClass = (ICompositeType) col.getName(0).resolveBinding();
2594
 		ICompositeType fooUnion = (ICompositeType) col.getName(1).resolveBinding();
2595
 		ICompositeType fooStruct = (ICompositeType) col.getName(2).resolveBinding();
2596
 		
2597
 		assertEquals(ICPPClassType.k_class, fooClass.getKey());
2598
 		assertEquals(ICompositeType.k_union, fooUnion.getKey());
2599
 		assertEquals(ICompositeType.k_struct, fooStruct.getKey());
2600
 		
2601
 		assertInstances(col, fooClass, 1);
2602
 		assertInstances(col, fooUnion, 1);
2603
 		assertInstances(col, fooStruct, 1);
2579
    }
2604
    }
2605
    
2606
    public void test158192_declspec_on_variable() throws Exception {
2607
    	Writer writer = new StringWriter();
2608
    	writer.write("__declspec(foobar) class Foo {} bar;\n");
2609
    	IASTTranslationUnit tu = parse( writer.toString(), true, ParserLanguage.CPP, true);
2610
    	
2611
    	CPPNameCollector col = new CPPNameCollector();
2612
 		tu.accept( col );
2613
 		
2614
 		assertEquals( 2, col.size());
2615
 		ICompositeType fooClass = (ICompositeType) col.getName(0).resolveBinding();
2616
 		ICPPVariable bar = (ICPPVariable) col.getName(1).resolveBinding();
2617
 		
2618
 		assertInstances(col, fooClass, 1);
2619
 		assertInstances(col, bar, 1);
2620
    }
2621
    
2622
//    public void test158192_false_positive() throws Exception {
2623
//    	Writer writer = new StringWriter();
2624
//    	writer.write("int * __declspec(foo) bar = 0;\n");
2625
//    	IASTTranslationUnit tu = parse( writer.toString(), true, ParserLanguage.CPP, true);
2626
//    	
2627
//    	IASTProblem [] problems = CPPVisitor.getProblems(tu);
2628
//    	assertTrue( problems.length>0 );
2629
//    	
2630
//    	CPPNameCollector col = new CPPNameCollector();
2631
// 		tu.accept( col );
2632
// 		
2633
// 		assertEquals( 1, col.size());
2634
// 		ICPPVariable bar = (ICPPVariable) col.getName(0).resolveBinding();
2635
// 		
2636
// 		assertInstances(col, bar, 1);
2637
//    }
2580
}
2638
}

Return to bug 158192