# HG changeset patch # User ryall # Date 1271105228 21600 # Node ID 5310aeaa3526f57a9d4a02898e085bc8a67f911a # Parent fab10c9fae2d8c1037837036eb1d0c56484b9f0d# Parent d6dbdb4c0be12b659ffb85784bcb43f54977f5c4 Merge license changes diff -r d6dbdb4c0be1 -r 5310aeaa3526 project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/TestMMPView.java --- a/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/TestMMPView.java Mon Apr 12 14:35:27 2010 -0600 +++ b/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/TestMMPView.java Mon Apr 12 14:47:08 2010 -0600 @@ -288,6 +288,74 @@ model.dispose(); } + /** bug 10968 */ + public void testSourceChanging7() throws Exception { + makeModel("SOURCEPATH ..\\src\n"+ + "SOURCE a.cpp b.cpp\n"+ + "SOURCE c.cpp\n"+ + "SOURCE d.cpp\n"+ + "SOURCEPATH ..\\data\n" + + "START RESOURCE extra.rss\n"+ + "END\n"); + + IMMPView view = getView(mmpConfig); + assertNotNull(view); + + // when we add files, put them in the right section (DUH) + view.getSources().add(new Path("data/Foo.cpp")); + commitTest(view, "SOURCEPATH ..\\src\n"+ + "SOURCE a.cpp b.cpp\n"+ + "SOURCE c.cpp\n"+ + "SOURCE d.cpp\n"+ + "SOURCEPATH ..\\data\n" + + "START RESOURCE extra.rss\n"+ + "END\n"+ + "SOURCE Foo.cpp\n" + + ""); + + match(new IPath[] { new Path("src"), new Path("data") }, view.getRealSourcePaths()); + + assertTrue(view.getSources().contains(new Path("data/Foo.cpp"))); + + view.dispose(); + model.dispose(); + } + + /** bug 10968 */ + public void testSourceChanging7b() throws Exception { + makeModel("SOURCEPATH ..\\src\n"+ + "SOURCE a.cpp b.cpp\n"+ + "SOURCE c.cpp\n"+ + "SOURCE d.cpp\n"+ + "SOURCEPATH ..\\data\n" + + "SOURCEPATH ..\\empty\n" + + "START RESOURCE extra.rss\n"+ + "END\n"); + + IMMPView view = getView(mmpConfig); + assertNotNull(view); + + // when we add files, put them in the right section (DUH) + view.getSources().add(new Path("data/Foo.cpp")); + commitTest(view, "SOURCEPATH ..\\src\n"+ + "SOURCE a.cpp b.cpp\n"+ + "SOURCE c.cpp\n"+ + "SOURCE d.cpp\n"+ + "SOURCEPATH ..\\empty\n" + + "START RESOURCE extra.rss\n"+ + "END\n"+ + "SOURCEPATH ..\\data\n" + + "SOURCE Foo.cpp\n" + + ""); + + match(new IPath[] { new Path("src"), new Path("empty"), new Path("data") }, view.getRealSourcePaths()); + + assertTrue(view.getSources().contains(new Path("data/Foo.cpp"))); + + view.dispose(); + model.dispose(); + } + public void testSourceChangingCond1() throws Exception { makeModel("SOURCEPATH ..\\src\n#if 1\nSOURCE a.cpp\n#endif\nSOURCE b.cpp c.cpp"); diff -r d6dbdb4c0be1 -r 5310aeaa3526 project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/mmp/MMPStatementUpdater.java --- a/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/mmp/MMPStatementUpdater.java Mon Apr 12 14:35:27 2010 -0600 +++ b/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/mmp/MMPStatementUpdater.java Mon Apr 12 14:47:08 2010 -0600 @@ -149,6 +149,15 @@ private void updateSourcePath(IASTMMPSingleArgumentStatement sourcePath) { changeStatement(sourcePath); currentSourcePath = mmpView.fromMmpToProjectPath(sourcePath.getArgument()); + + // These statements depend on the SOURCEPATH, but such statements may + // not actually appear. Thus, if we add a new entry, we should not change + // the previous SOURCE/etc. statement until until there is an actual + // statement to modify (bug 10968) + lastListStmts.remove(EMMPStatement.SOURCE); + lastListStmts.remove(EMMPStatement.DOCUMENT); + lastListStmts.remove(EMMPStatement.RESOURCE); + lastListStmts.remove(EMMPStatement.SYSTEMRESOURCE); } /**