|
50 | 50 |
|
51 | 51 | public class ClassSymbolImpl extends SymbolImpl implements ClassSymbol { |
52 | 52 |
|
53 | | - private final List<Symbol> superClasses = new ArrayList<>(); |
54 | | - private List<String> superClassesFqns = new ArrayList<>(); |
| 53 | + private final List<Symbol> superClasses = Collections.synchronizedList(new ArrayList<>()); |
| 54 | + private List<String> superClassesFqns = Collections.synchronizedList(new ArrayList<>()); |
55 | 55 | private List<String> inlinedSuperClassFqn = new ArrayList<>(); |
56 | | - private Set<Symbol> allSuperClasses = null; |
57 | | - private Set<Symbol> allSuperClassesIncludingAmbiguousSymbols = null; |
| 56 | + private volatile Set<Symbol> allSuperClasses = null; |
| 57 | + private volatile Set<Symbol> allSuperClassesIncludingAmbiguousSymbols = null; |
58 | 58 | private boolean hasSuperClassWithoutSymbol = false; |
59 | 59 | private final Set<Symbol> members = new HashSet<>(); |
60 | 60 | private Map<String, Symbol> membersByName = null; |
@@ -205,9 +205,9 @@ public boolean shouldSearchHierarchyInTypeshed() { |
205 | 205 | } |
206 | 206 |
|
207 | 207 | @Override |
208 | | - public List<Symbol> superClasses() { |
| 208 | + public synchronized List<Symbol> superClasses() { |
209 | 209 | // In case of symbols coming from TypeShed protobuf, we resolve superclasses lazily |
210 | | - if (!hasAlreadyReadSuperClasses && superClasses.isEmpty() && !superClassesFqns.isEmpty()) { |
| 210 | + if (shouldSearchHierarchyInTypeshed()) { |
211 | 211 | superClassesFqns.stream().map(SymbolUtils::typeshedSymbolWithFQN).forEach(this::addSuperClass); |
212 | 212 | } |
213 | 213 | hasAlreadyReadSuperClasses = true; |
@@ -362,7 +362,7 @@ public String metaclassFQN() { |
362 | 362 | return metaclassFQN; |
363 | 363 | } |
364 | 364 |
|
365 | | - private Set<Symbol> allSuperClasses(boolean includeAmbiguousSymbols) { |
| 365 | + private synchronized Set<Symbol> allSuperClasses(boolean includeAmbiguousSymbols) { |
366 | 366 | if (!includeAmbiguousSymbols) { |
367 | 367 | if (allSuperClasses == null) { |
368 | 368 | allSuperClasses = new LinkedHashSet<>(); |
|
0 commit comments