Skip to content

Commit 0106f3c

Browse files
author
rcartwright
committed
This revision eliminates some unnecessary "swith-to-event-thread" code
wrappers and adds some isDisptchThread assertions. But the unit tests still contain some code that violates the event thread invariant for GUI components. The undo command is particularly problemati. The following files were modified: M src/edu/rice/cs/drjava/DrJavaTestCase.java M src/edu/rice/cs/drjava/IndentFiles.java M src/edu/rice/cs/drjava/DrJava.java M src/edu/rice/cs/drjava/model/GlobalModelIOTest.java M src/edu/rice/cs/drjava/model/GlobalModelTestCase.java M src/edu/rice/cs/drjava/model/GlobalModelCompileSuccessTest.java M src/edu/rice/cs/drjava/model/DefaultGlobalModel.java M src/edu/rice/cs/drjava/model/GlobalModelCompileErrorsTest.java M src/edu/rice/cs/drjava/model/definitions/IndentTest.java M src/edu/rice/cs/drjava/model/GlobalModelCompileSuccessOptionsTest.java M src/edu/rice/cs/drjava/model/junit/DefaultJUnitModel.java M src/edu/rice/cs/drjava/model/junit/JUnitErrorModelTest.java M src/edu/rice/cs/drjava/model/junit/JUnitModel.java M src/edu/rice/cs/drjava/model/repl/InteractionsModelCallback.java M src/edu/rice/cs/drjava/model/repl/InteractionsModel.java M src/edu/rice/cs/drjava/model/repl/newjvm/MainJVM.java M src/edu/rice/cs/drjava/model/repl/newjvm/NewJVMTest.java M src/edu/rice/cs/drjava/model/repl/DefaultInteractionsModel.java M src/edu/rice/cs/drjava/model/repl/RMIInteractionsModel.java M src/edu/rice/cs/drjava/model/GlobalModelJUnitTest.java M src/edu/rice/cs/drjava/model/GlobalModelCompileIOTest.java M src/edu/rice/cs/drjava/model/MultiThreadedTestCase.java M src/edu/rice/cs/drjava/model/GlobalModelCompileTest.java M src/edu/rice/cs/drjava/model/AbstractGlobalModel.java M src/edu/rice/cs/drjava/model/GlobalModelOtherTest.java M src/edu/rice/cs/drjava/ui/MainFrame.java M src/edu/rice/cs/drjava/ui/DefinitionsPane.java M src/edu/rice/cs/drjava/ui/predictive/PredictiveInputFrame.java M src/edu/rice/cs/drjava/ui/ErrorCaretListener.java M src/edu/rice/cs/drjava/ui/config/OptionComponent.java M src/edu/rice/cs/drjava/ui/MainFrameTest.java M src/edu/rice/cs/drjava/ui/DefinitionsPaneTest.java M src/edu/rice/cs/drjava/ui/FindReplacePanel.java M src/edu/rice/cs/drjava/ui/InteractionsController.java git-svn-id: file:///tmp/test-svn/trunk@4541 fe72c1cf-3628-48e9-8b72-1c46755d3cff
1 parent 0e0a6cd commit 0106f3c

34 files changed

Lines changed: 473 additions & 491 deletions

drjava/src/edu/rice/cs/drjava/DrJava.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
*/
7676
public class DrJava {
7777

78-
private static Log _log = new Log("DrJava.txt", false);
78+
private static volatile Log _log = new Log("DrJava.txt", false);
7979

8080
private static final String DEFAULT_MAX_HEAP_SIZE_ARG = "-Xmx128M";
8181

@@ -178,7 +178,7 @@ public static void configureAndLoadDrJavaRoot(String[] args) {
178178
// Add the parameters "-debugConsole" to classArgsList if _showDebugConsole is true
179179
if (_showDebugConsole) { classArgsList.addFirst("-debugConsole"); }
180180

181-
if (!_propertiesFile.equals(DEFAULT_PROPERTIES_FILE)) {
181+
if (! _propertiesFile.equals(DEFAULT_PROPERTIES_FILE)) {
182182
// Placed in reversed order to get "-config filename"
183183
classArgsList.addFirst(_propertiesFile.getAbsolutePath());
184184
classArgsList.addFirst("-config");
@@ -388,10 +388,12 @@ static FileConfiguration _initConfig() throws IllegalStateException {
388388

389389
FileConfiguration config;
390390

391-
try { _propertiesFile.createNewFile(); } // be nice and ensure a config file if there isn't one
391+
final File propFile = _propertiesFile; // a static variable shared across configurations in tests
392+
393+
try { propFile.createNewFile(); } // be nice and ensure a config file if there isn't one
392394
catch (IOException e) { /* IOException occurred, continue without a real file */ }
393395

394-
config = new FileConfiguration(_propertiesFile);
396+
config = new FileConfiguration(propFile);
395397
try { config.loadConfiguration(); }
396398
catch (Exception e) {
397399
// Problem parsing the config file. Use defaults and remember what happened (for the UI).
@@ -465,6 +467,7 @@ protected static void _saveConfig() {
465467
public static void cleanUp() {
466468
_filesToOpen.clear();
467469
_jvmArgs.clear();
470+
// Do not set _config or _propertiesFile to null because THEY ARE static
468471
}
469472

470473
}

drjava/src/edu/rice/cs/drjava/DrJavaTestCase.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@ protected void setUp() throws Exception {
6767
// Utilities.show("Setting '" + newName + "' as DrJava configuration file");
6868
Utilities.invokeLater(new Runnable() {
6969
public void run() {
70-
DrJava.setPropertiesFile(newName);
70+
DrJava.setPropertiesFile(newName); // spawns change updates which should run in event thread
7171
// Utilities.clearEventQueue();
72-
DrJava._initConfig();
72+
DrJava._initConfig(); // spawns change updates which should run in event thread
7373
// Utilities.clearEventQueue();
7474
}
7575
});
@@ -81,7 +81,7 @@ public void run() {
8181
* @throws Exception
8282
*/
8383
protected void tearDown() throws Exception {
84-
DrJava.cleanUp(); // clobbers _config
84+
DrJava.cleanUp();
8585
super.tearDown();
8686
}
8787
}

drjava/src/edu/rice/cs/drjava/IndentFiles.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,7 @@ public static void main(String[] args) {
8181
}
8282
}
8383

84-
/** Displays a message showing how to use this class.
85-
*/
84+
/** Displays a message showing how to use this class. */
8685
private static void _displayUsage() {
8786
System.out.println(
8887
"Usage:" +

drjava/src/edu/rice/cs/drjava/model/AbstractGlobalModel.java

Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@
124124
import edu.rice.cs.drjava.project.ProjectFileIR;
125125
import edu.rice.cs.drjava.project.ProjectFileParserFacade;
126126
import edu.rice.cs.drjava.project.ProjectProfile;
127+
import edu.rice.cs.drjava.ui.DrJavaErrorHandler;
127128
import edu.rice.cs.drjava.ui.MainFrame;
128129
import edu.rice.cs.drjava.ui.SplashScreen;
129130

@@ -1655,10 +1656,10 @@ private void _loadProject(final ProjectFileIR ir) throws IOException {
16551656
final DocFile[] excludedFiles = ir.getExcludedFiles();
16561657
final File projectFile = ir.getProjectFile();
16571658
File pr = ir.getProjectRoot();
1658-
try {
1659-
pr = pr.getCanonicalFile();
1660-
}
1659+
1660+
try { pr = pr.getCanonicalFile(); }
16611661
catch(IOException ioe) { /* could not canonize file, we'll take what we have */ }
1662+
16621663
final File projectRoot = pr;
16631664
final File buildDir = ir.getBuildDirectory ();
16641665
final File workDir = ir.getWorkingDirectory();
@@ -1688,38 +1689,35 @@ private void _loadProject(final ProjectFileIR ir) throws IOException {
16881689
List<Pair<String, INavigatorItemFilter<OpenDefinitionsDocument>>> l =
16891690
new LinkedList<Pair<String, INavigatorItemFilter<OpenDefinitionsDocument>>>();
16901691

1691-
l.add(new Pair<String, INavigatorItemFilter<OpenDefinitionsDocument>>(getSourceBinTitle(),
1692-
new INavigatorItemFilter<OpenDefinitionsDocument>() {
1692+
INavigatorItemFilter<OpenDefinitionsDocument> navItem1 = new INavigatorItemFilter<OpenDefinitionsDocument>() {
16931693
public boolean accept(OpenDefinitionsDocument d) { return d.inProjectPath(); }
1694-
}));
1694+
};
16951695

1696-
l.add(new Pair<String, INavigatorItemFilter<OpenDefinitionsDocument>>(getAuxiliaryBinTitle(),
1697-
new INavigatorItemFilter<OpenDefinitionsDocument>() {
1696+
l.add(new Pair<String, INavigatorItemFilter<OpenDefinitionsDocument>>(getSourceBinTitle(), navItem1));
1697+
1698+
INavigatorItemFilter<OpenDefinitionsDocument> navItem2 = new INavigatorItemFilter<OpenDefinitionsDocument>() {
16981699
public boolean accept(OpenDefinitionsDocument d) { return d.isAuxiliaryFile(); }
1699-
}));
1700+
};
17001701

1701-
l.add(new Pair<String, INavigatorItemFilter<OpenDefinitionsDocument>>(getExternalBinTitle(),
1702-
new INavigatorItemFilter<OpenDefinitionsDocument>() {
1702+
l.add(new Pair<String, INavigatorItemFilter<OpenDefinitionsDocument>>(getAuxiliaryBinTitle(), navItem2));
1703+
1704+
INavigatorItemFilter<OpenDefinitionsDocument> navItem3 = new INavigatorItemFilter<OpenDefinitionsDocument>() {
17031705
public boolean accept(OpenDefinitionsDocument d) {
17041706
return !(d.inProject() || d.isAuxiliaryFile()) || d.isUntitled();
17051707
}
1706-
}));
1707-
1708+
};
1709+
1710+
l.add(new Pair<String, INavigatorItemFilter<OpenDefinitionsDocument>>(getExternalBinTitle(), navItem3));
1711+
17081712
IDocumentNavigator<OpenDefinitionsDocument> newNav =
1709-
new AWTContainerNavigatorFactory<OpenDefinitionsDocument>().makeTreeNavigator(projfilepath, getDocumentNavigator(), l);
1713+
new AWTContainerNavigatorFactory<OpenDefinitionsDocument>().
1714+
makeTreeNavigator(projfilepath, getDocumentNavigator(), l);
17101715

17111716
setDocumentNavigator(newNav);
17121717

1713-
// synchronized(_auxiliaryFiles) {
1714-
// _auxiliaryFiles.clear();
1715-
// for (File file: auxFiles) { _auxiliaryFiles.add(file); }
1716-
// }
1717-
1718-
// Utilities.show("Project Root loaded into grouping state is " + projRoot);
1719-
17201718
setFileGroupingState(makeProjectFileGroupingState(projectRoot, mainClass, buildDir, workDir, projectFile, srcFiles,
1721-
auxFiles, excludedFiles, projectClassPaths, createJarFile, createJarFlags,
1722-
autoRefresh));
1719+
auxFiles, excludedFiles, projectClassPaths, createJarFile,
1720+
createJarFlags, autoRefresh));
17231721

17241722
resetInteractions(getWorkingDirectory()); // Shutdown debugger and reset interactions pane in new working directory
17251723

@@ -1782,11 +1780,7 @@ public boolean accept(OpenDefinitionsDocument d) {
17821780
if (! modifiedFiles.contains(f)) {
17831781
int lnr = dbd.getLineNumber();
17841782
OpenDefinitionsDocument odd = getDocumentForFile(f);
1785-
// odd.acquireReadLock();
1786-
// try {
17871783
getDebugger().toggleBreakpoint(odd, odd._getOffset(lnr), lnr, dbd.isEnabled());
1788-
// }
1789-
// finally { odd.releaseReadLock(); }
17901784
}
17911785
}
17921786
catch(DebugException de) { /* ignore, just don't add breakpoint */ }
@@ -1810,9 +1804,13 @@ public boolean accept(OpenDefinitionsDocument d) {
18101804
File f = bm.getFile();
18111805
if (! modifiedFiles.contains(f)) {
18121806
final OpenDefinitionsDocument odd = getDocumentForFile(f);
1813-
final Position startPos = odd.createPosition(bm.getStartOffset());
1814-
final Position endPos = odd.createPosition(bm.getEndOffset());
1815-
getBookmarkManager().addRegion(new DocumentRegion(odd, startPos, endPos));
1807+
if (getOpenDefinitionsDocuments().contains(odd)) { // bookmark is not stale
1808+
final Position startPos = odd.createPosition(bm.getStartOffset());
1809+
final Position endPos = odd.createPosition(bm.getEndOffset());
1810+
try { getBookmarkManager().addRegion(new DocumentRegion(odd, startPos, endPos)); }
1811+
catch(Exception e) { DrJavaErrorHandler.record(e); } // should never happen
1812+
}
1813+
// should remove stale bookmark
18161814
}
18171815
}
18181816
}
@@ -2154,9 +2152,9 @@ public List<OpenDefinitionsDocument> getOpenDefinitionsDocuments() {
21542152

21552153
public boolean hasOutOfSyncDocuments(List<OpenDefinitionsDocument> lod) {
21562154
for (OpenDefinitionsDocument doc: lod) {
2157-
if ((doc.isSourceFile()) &&
2158-
(!isProjectActive() || doc.inProjectPath() || doc.isAuxiliaryFile()) &&
2159-
(!doc.checkIfClassFileInSync())) return true;
2155+
if (doc.isSourceFile() &&
2156+
(! isProjectActive() || doc.inProjectPath() || doc.isAuxiliaryFile()) &&
2157+
(! doc.checkIfClassFileInSync())) return true;
21602158
}
21612159
return false;
21622160
}
@@ -2954,6 +2952,7 @@ public boolean saveFile(FileSaveSelector com) throws IOException {
29542952
* @return true if the file was saved, false if the operation was canceled
29552953
*/
29562954
public boolean saveFileAs(FileSaveSelector com) throws IOException {
2955+
assert EventQueue.isDispatchThread();
29572956
// System.err.println("AbstractGlobalModel.saveFileAs called on " + this);
29582957
File oldFile = getRawFile();
29592958
// Update _packageName since modifiedSinceSaved flag will be set to false

drjava/src/edu/rice/cs/drjava/model/DefaultGlobalModel.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,8 @@ public void disposeExternalResources() {
373373
/** Clears and resets the slave JVM with working directory wd. Also clears the console if the option is
374374
* indicated (on by default). The reset operation is suppressed if the existing slave JVM has not been
375375
* used, {@code wd} matches its working directory, and forceReset is false. {@code wd} may be {@code null}
376-
* if a valid directory cannot be determined. In that case, the former working directory is used.
376+
* if a valid directory cannot be determined. In that case, the former working directory is used. This
377+
* method may run outside the event thread.
377378
*/
378379
public void resetInteractions(File wd, boolean forceReset) {
379380
assert _interactionsModel._pane != null;
@@ -448,7 +449,6 @@ public void printDebugMessage(String s) {
448449
/** Blocks until the interpreter has registered. */
449450
public void waitForInterpreter() { _jvm.ensureInterpreterConnected(); }
450451

451-
452452
/** Returns the current classpath in use by the Interpreter JVM. */
453453
public Iterable<File> getInteractionsClassPath() { return _jvm.getClassPath(); }
454454

@@ -685,9 +685,11 @@ public Iterable<File> getClassPath() {
685685

686686
/** Adds the project root (if a project is open), the source roots for other open documents, the paths in the
687687
* "extra classpath" config option, as well as any project-specific classpaths to the interpreter's classpath.
688-
* This method is called in DefaultInteractionsModel when the interpreter becomes ready.
688+
* This method is called in DefaultInteractionsModel when the interpreter becomes ready. Runs outside the event
689+
* thread.
689690
*/
690691
public void resetInteractionsClassPath() {
692+
// System.err.println("Resetting interactions class path");
691693
Iterable<File> projectExtras = getExtraClassPath();
692694
//System.out.println("Adding project classpath vector to interactions classpath: " + projectExtras);
693695
if (projectExtras != null) for (File cpE : projectExtras) { _interactionsModel.addProjectClassPath(cpE); }
@@ -714,7 +716,7 @@ public void resetInteractionsClassPath() {
714716

715717
// add project source root to projectFilesClassPath. All files in project tree have this root.
716718

717-
_interactionsModel.addProjectFilesClassPath(getProjectRoot());
719+
_interactionsModel.addProjectFilesClassPath(getProjectRoot()); // is sync advisable here?
718720
setClassPathChanged(false); // reset classPathChanged state
719721
}
720722

drjava/src/edu/rice/cs/drjava/model/GlobalModelCompileErrorsTest.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,11 @@ public void testCompileAllFailsDifferentSourceRoots() throws BadLocationExceptio
104104

105105
OpenDefinitionsDocument doc1 = setupDocument(FOO_MISSING_CLOSE_TEXT);
106106
final File file1 = new File(aDir, "DrJavaTestFoo.java");
107-
doc1.saveFile(new FileSelector(file1));
107+
saveFile(doc1, new FileSelector(file1));
108108

109109
OpenDefinitionsDocument doc2 = setupDocument(BAR_MISSING_SEMI_TEXT);
110110
final File file2 = new File(bDir, "DrJavaTestBar.java");
111-
doc2.saveFile(new FileSelector(file2));
111+
saveFile(doc2, new FileSelector(file2));
112112

113113
CompileShouldFailListener listener = new CompileShouldFailListener();
114114

@@ -137,7 +137,7 @@ public void testCompileAllFailsDifferentSourceRoots() throws BadLocationExceptio
137137
public void testCompilePackageAsField() throws BadLocationException, IOException, InterruptedException {
138138
OpenDefinitionsDocument doc = setupDocument(FOO_PACKAGE_AS_FIELD);
139139
final File file = tempFile();
140-
doc.saveFile(new FileSelector(file));
140+
saveFile(doc,new FileSelector(file));
141141

142142
CompileShouldFailListener listener = new CompileShouldFailListener();
143143
_model.addListener(listener);
@@ -161,7 +161,7 @@ public void testCompilePackageAsField() throws BadLocationException, IOException
161161
public void testCompilePackageAsField2() throws BadLocationException, IOException, InterruptedException {
162162
final OpenDefinitionsDocument doc = setupDocument(FOO_PACKAGE_AS_FIELD_2);
163163
final File file = tempFile();
164-
doc.saveFile(new FileSelector(file));
164+
saveFile(doc, new FileSelector(file));
165165

166166
CompileShouldFailListener listener = new CompileShouldFailListener();
167167
_model.addListener(listener);
@@ -183,7 +183,7 @@ public void testCompilePackageAsField2() throws BadLocationException, IOExceptio
183183
public void testCompileMissingCloseCurly() throws BadLocationException, IOException, InterruptedException {
184184
final OpenDefinitionsDocument doc = setupDocument(FOO_MISSING_CLOSE_TEXT);
185185
final File file = tempFile();
186-
doc.saveFile(new FileSelector(file));
186+
saveFile(doc, new FileSelector(file));
187187

188188
CompileShouldFailListener listener = new CompileShouldFailListener();
189189
_model.addListener(listener);
@@ -214,7 +214,7 @@ public void testCompileWithPackageStatementInsideClass() throws BadLocationExcep
214214

215215
// Save the footext to DrJavaTestFoo.java in the subdirectory
216216
OpenDefinitionsDocument doc = setupDocument(FOO_PACKAGE_INSIDE_CLASS);
217-
doc.saveFileAs(new FileSelector(fooFile));
217+
saveFileAs(doc, new FileSelector(fooFile));
218218

219219
// do compile -- should fail since package decl is not valid!
220220
CompileShouldFailListener listener = new CompileShouldFailListener();
@@ -246,11 +246,10 @@ public void testCompileFailsCorrectLineNumbers() throws BadLocationException, IO
246246
bDir.mkdir();
247247
OpenDefinitionsDocument doc = setupDocument(FOO_PACKAGE_AFTER_IMPORT);
248248
final File file = new File(aDir, "DrJavaTestFoo.java");
249-
doc.saveFile(new FileSelector(file));
249+
saveFile(doc, new FileSelector(file));
250250
OpenDefinitionsDocument doc2 = setupDocument(BAR_MISSING_SEMI_TEXT_MULTIPLE_LINES);
251251
final File file2 = new File(bDir, "DrJavaTestBar.java");
252-
doc2.saveFile(new FileSelector(file2));
253-
252+
saveFile(doc2, new FileSelector(file2));
254253

255254
// do compile -- should fail since package decl is not valid!
256255
CompileShouldFailListener listener = new CompileShouldFailListener();

drjava/src/edu/rice/cs/drjava/model/GlobalModelCompileIOTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public void testClassFileSynchronization() throws BadLocationException, IOExcept
5858
final File file = tempFile();
5959
// System.err.println("Temp source file is " + file.getAbsolutePath());
6060

61-
doc.saveFile(new FileSelector(file));
61+
saveFile(doc, new FileSelector(file));
6262

6363
CompileShouldSucceedListener listener = new CompileShouldSucceedListener(false);
6464
_model.addListener(listener);
@@ -82,7 +82,7 @@ public void testClassFileSynchronization() throws BadLocationException, IOExcept
8282
// Have to wait 2 seconds so file will have a different timestamp
8383
Thread.sleep(2000);
8484

85-
doc.saveFile(new FileSelector(file));
85+
saveFile(doc, new FileSelector(file));
8686
assertTrue("should not be in sync after save", ! doc.checkIfClassFileInSync());
8787

8888
// Make sure .class exists
@@ -100,7 +100,7 @@ public void testClassFileSynchronizationAfterRename() throws BadLocationExceptio
100100
final File file = tempFile();
101101
final File file2 = tempFile(2);
102102

103-
doc.saveFile(new FileSelector(file));
103+
saveFile(doc, new FileSelector(file));
104104

105105
CompileShouldSucceedListener listener = new CompileShouldSucceedListener(false);
106106
_model.addListener(listener);
@@ -121,15 +121,15 @@ public void testClassFileSynchronizationAfterRename() throws BadLocationExceptio
121121
Thread.sleep(2000);
122122

123123
// Rename to a different file
124-
doc.saveFileAs(new FileSelector(file2));
124+
saveFileAs(doc, new FileSelector(file2));
125125
assertTrue("should not be in sync after renaming", ! doc.checkIfClassFileInSync());
126126
}
127127

128128
/** Tests a compile after a file has unexpectedly been moved or delete. */
129129
public void testCompileAfterFileMoved() throws BadLocationException, IOException {
130130
final OpenDefinitionsDocument doc = setupDocument(FOO_TEXT);
131131
final File file = tempFile();
132-
doc.saveFile(new FileSelector(file));
132+
saveFile(doc, new FileSelector(file));
133133
TestListener listener = new TestListener();
134134
_model.addListener(listener);
135135
file.delete();

drjava/src/edu/rice/cs/drjava/model/GlobalModelCompileSuccessOptionsTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ public void testCompileReferenceToNonPublicClass()
6565
OpenDefinitionsDocument doc2 = setupDocument(FOO2_REFERENCES_NON_PUBLIC_CLASS_TEXT);
6666
final File file = tempFile();
6767
final File file2 = tempFile(1);
68-
doc.saveFile(new FileSelector(file));
69-
doc2.saveFile(new FileSelector(file2));
68+
saveFile(doc, new FileSelector(file));
69+
saveFile(doc2, new FileSelector(file2));
7070
CompileShouldSucceedListener listener = new CompileShouldSucceedListener(false);
7171
_model.addListener(listener);
7272
listener.compile(doc);
@@ -104,7 +104,7 @@ public void testCompileWithJavaAssert()
104104
if (Float.valueOf(System.getProperty("java.specification.version")) < 1.5) {
105105
OpenDefinitionsDocument doc = setupDocument(FOO_WITH_ASSERT);
106106
final File file = tempFile();
107-
doc.saveFile(new FileSelector(file));
107+
saveFile(doc, new FileSelector(file));
108108
CompileShouldFailListener listener = new CompileShouldFailListener();
109109
_model.addListener(listener);
110110

@@ -158,7 +158,7 @@ public void testCompileWithGenerics()
158158

159159
OpenDefinitionsDocument doc = setupDocument(FOO_WITH_GENERICS);
160160
final File file = new File(_tempDir, "DrJavaTestFooGenerics.java");
161-
doc.saveFile(new FileSelector(file));
161+
saveFile(doc, new FileSelector(file));
162162

163163
CompileShouldSucceedListener listener = new CompileShouldSucceedListener(false);
164164
_model.addListener(listener);

0 commit comments

Comments
 (0)