Skip to content

Commit 5293cb4

Browse files
author
dlsmith
committed
DynamicJava: Fixed handling of LinkageErrors when classes are loaded by TopLevelContext
git-svn-id: file:///tmp/test-svn/trunk@4284 fe72c1cf-3628-48e9-8b72-1c46755d3cff
1 parent 9ce155a commit 5293cb4

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

dynamicjava/src/edu/rice/cs/dynamicjava/interpreter/TopLevelContext.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,16 +158,20 @@ public DJClass getTopLevelClass(String name, TypeSystem ts) throws AmbiguousName
158158
if (TextUtil.contains(name, '.')) {
159159
try { return SymbolUtil.wrapClass(_loader.loadClass(name)); }
160160
catch (ClassNotFoundException e) { return null; }
161+
catch (LinkageError e) { return null; }
161162
}
162163
else {
163164
DJClass result = _importedTopLevelClasses.get(name);
164165
if (result == null) {
165166
try { result = SymbolUtil.wrapClass(_loader.loadClass(makeClassName(name))); }
166-
catch (ClassNotFoundException e) {
167+
catch (ClassNotFoundException e) { /* ignore -- class is not in the imported/default package */ }
168+
catch (LinkageError e) { /* ignore -- class is not in the imported/default package */ }
169+
if (result == null) {
167170
LinkedList<Class<?>> onDemandMatches = new LinkedList<Class<?>>();
168171
for (String p : _onDemandPackages) {
169172
try { onDemandMatches.add(_loader.loadClass(p + "." + name)); }
170173
catch (ClassNotFoundException e2) { /* ignore -- class is not in this package */ }
174+
catch (LinkageError e) { /* ignore -- class is not in this package */ }
171175
}
172176
if (onDemandMatches.size() > 1) { throw new AmbiguousNameException(); }
173177
else if (onDemandMatches.size() == 1) { result = SymbolUtil.wrapClass(onDemandMatches.getFirst()); }

0 commit comments

Comments
 (0)