Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Eidsness2014-04-07 16:48:47 +0000
committerAndrew Eidsness2014-04-10 19:35:00 +0000
commit10659aa77f8cafb07e39ba71881cf6f7e78f3b8a (patch)
treeacdc13d7c2fc2055614f5c3095f7db74a17b356d /extraplugins
parentb17bd6b9496e67793d3194c9571f68fb134bf99f (diff)
downloadorg.eclipse.papyrus-10659aa77f8cafb07e39ba71881cf6f7e78f3b8a.tar.gz
org.eclipse.papyrus-10659aa77f8cafb07e39ba71881cf6f7e78f3b8a.tar.xz
org.eclipse.papyrus-10659aa77f8cafb07e39ba71881cf6f7e78f3b8a.zip
Bug 425208: Duplicate visibility keywords
A Java utility function is used to merge adjacent visibitily sections (within a C++ class definition). For example, this: class T { public: void func1(); public: void func2(); }; Should appear as: class T { public: void func1(); void func2(); }; This Java utility maintains internal state so that the visibility keyword is written only once. This problem was raised because the internal state is updated even when the keyword is not written to the file. For example, this happens if the generation templates try to generate an empty section with a different visibility from what was currently written. This patch modifies the utility function so that internal state is only updated when the keyword is actually written out to the file. Change-Id: I052ede33110d382409476cac4cef38a417aaa904 Signed-off-by: Andrew Eidsness <eclipse@jfront.com>
Diffstat (limited to 'extraplugins')
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/CppGenUtils.java12
1 files changed, 6 insertions, 6 deletions
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/CppGenUtils.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/CppGenUtils.java
index 42d87d5fd4d..807effc4dc1 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/CppGenUtils.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/CppGenUtils.java
@@ -296,7 +296,6 @@ public class CppGenUtils {
private static Namespace currentNS;
- private static boolean visibilityStale = false;
private static VisibilityKind currVisibility = null;
private static final Pattern EmptySectionRegex = Pattern.compile("^\\s*$"); //$NON-NLS-1$
@@ -306,7 +305,6 @@ public class CppGenUtils {
*/
public static void resetVisibility(VisibilityKind v) {
currVisibility = v;
- visibilityStale = false;
}
/**
@@ -314,9 +312,11 @@ public class CppGenUtils {
* the previously declared visibility (if appropriate). Ignore empty content.
*/
public static String getSection(VisibilityKind visibility, String content) {
+ // Bug 425208: Don't update the visibility until we know for sure that it
+ // will be written to the output.
+ VisibilityKind newVisibility = null;
if (!visibility.equals(currVisibility)) {
- currVisibility = visibility;
- visibilityStale = true;
+ newVisibility = visibility;
}
// Filter out empty sections.
@@ -326,11 +326,11 @@ public class CppGenUtils {
}
// Don't write duplicate visibility modifiers.
- if (!visibilityStale) {
+ if (newVisibility == null) {
return content;
}
- visibilityStale = false;
+ currVisibility = newVisibility;
return currVisibility.toString() + ":\n" + content; //$NON-NLS-1$
}
}

Back to the top