Don't include files from outside a compilation unit
authorCasper Hornstrup <chorns@users.sourceforge.net>
Fri, 25 Nov 2005 14:38:59 +0000 (14:38 +0000)
committerCasper Hornstrup <chorns@users.sourceforge.net>
Fri, 25 Nov 2005 14:38:59 +0000 (14:38 +0000)
svn path=/trunk/; revision=19554

reactos/tools/rbuild/module.cpp
reactos/tools/rbuild/tests/compilationunittest.cpp
reactos/tools/rbuild/tests/data/compilationunit.xml

index 7c1a710..1073fb1 100644 (file)
@@ -448,6 +448,7 @@ Module::ProcessXMLSubElement ( const XMLElement& e,
                                ParseContext& parseContext )
 {
        If* pOldIf = parseContext.ifData;
+       CompilationUnit* pOldCompilationUnit = parseContext.compilationUnit;
        bool subs_invalid = false;
        string subpath ( path );
        if ( e.name == "file" && e.value.size () > 0 )
@@ -654,6 +655,7 @@ Module::ProcessXMLSubElement ( const XMLElement& e,
        for ( size_t i = 0; i < e.subElements.size (); i++ )
                ProcessXMLSubElement ( *e.subElements[i], subpath, parseContext );
        parseContext.ifData = pOldIf;
+       parseContext.compilationUnit = pOldCompilationUnit;
 }
 
 ModuleType
index 519ab07..13f2e58 100644 (file)
@@ -29,15 +29,21 @@ void CompilationUnitTest::Run()
        Module& module1 = *project.modules[0];
        IS_TRUE ( module1.type == BuildTool );
        
-       ARE_EQUAL ( 2, module1.non_if_data.files.size());
+       ARE_EQUAL ( 3, module1.non_if_data.files.size());
        ARE_EQUAL ( "dir1" SSEP "file1.c", module1.non_if_data.files[0]->name );
        ARE_EQUAL ( "dir1" SSEP "file2.c", module1.non_if_data.files[1]->name );
+       ARE_EQUAL ( "dir1" SSEP "file3.c", module1.non_if_data.files[2]->name );
 
-       ARE_EQUAL ( 1, module1.non_if_data.compilationUnits.size () );
+       ARE_EQUAL ( 2, module1.non_if_data.compilationUnits.size () );
 
        CompilationUnit& compilationUnit1 = *module1.non_if_data.compilationUnits[0];
        ARE_EQUAL ( 2, compilationUnit1.files.size () );
 
        ARE_EQUAL ( "dir1" SSEP "file1.c", compilationUnit1.files[0]->name );
        ARE_EQUAL ( "dir1" SSEP "file2.c", compilationUnit1.files[1]->name );
+
+       CompilationUnit& compilationUnit2 = *module1.non_if_data.compilationUnits[1];
+       ARE_EQUAL ( 1, compilationUnit2.files.size () );
+
+       ARE_EQUAL ( "dir1" SSEP "file3.c", compilationUnit2.files[0]->name );
 }
index d238c38..65d9870 100644 (file)
@@ -6,6 +6,7 @@
                                <file>file1.c</file>
                                <file>file2.c</file>
                        </compilationunit>
+                       <file>file3.c</file>
                </module>
        </directory>
 </project>