cache scope text for deep scopes (IDEA-114816)

This commit is contained in:
anna
2013-10-21 18:34:58 +02:00
parent 835549ca5f
commit 64284c1401
2 changed files with 22 additions and 12 deletions
@@ -24,6 +24,8 @@ public class IntersectionPackageSet extends PackageSetBase {
private final PackageSet myFirstSet;
private final PackageSet mySecondSet;
private String myText;
public IntersectionPackageSet(PackageSet firstSet, PackageSet secondSet) {
myFirstSet = firstSet;
mySecondSet = secondSet;
@@ -58,18 +60,21 @@ public class IntersectionPackageSet extends PackageSetBase {
@Override
@NotNull
public String getText() {
StringBuffer buf = new StringBuffer();
boolean needParen = myFirstSet.getNodePriority() > getNodePriority();
if (needParen) buf.append('(');
buf.append(myFirstSet.getText());
if (needParen) buf.append(')');
buf.append("&&");
needParen = mySecondSet.getNodePriority() > getNodePriority();
if (needParen) buf.append('(');
buf.append(mySecondSet.getText());
if (needParen) buf.append(')');
if (myText == null) {
final StringBuilder buf = new StringBuilder();
boolean needParen = myFirstSet.getNodePriority() > getNodePriority();
if (needParen) buf.append('(');
buf.append(myFirstSet.getText());
if (needParen) buf.append(')');
buf.append("&&");
needParen = mySecondSet.getNodePriority() > getNodePriority();
if (needParen) buf.append('(');
buf.append(mySecondSet.getText());
if (needParen) buf.append(')');
return buf.toString();
myText = buf.toString();
}
return myText;
}
public PackageSet getFirstSet() {
@@ -24,6 +24,8 @@ public class UnionPackageSet extends PackageSetBase {
private final PackageSet myFirstSet;
private final PackageSet mySecondSet;
private String myText;
public UnionPackageSet(@NotNull PackageSet set1, @NotNull PackageSet set2) {
myFirstSet = set1;
mySecondSet = set2;
@@ -54,7 +56,10 @@ public class UnionPackageSet extends PackageSetBase {
@Override
@NotNull
public String getText() {
return myFirstSet.getText() + "||" + mySecondSet.getText();
if (myText == null) {
myText = myFirstSet.getText() + "||" + mySecondSet.getText();
}
return myText;
}
public PackageSet getFirstSet() {