summaryrefslogtreecommitdiff
path: root/sources/scalac/Global.java
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2004-03-21 12:51:41 +0000
committerpaltherr <paltherr@epfl.ch>2004-03-21 12:51:41 +0000
commit49332fe728c05d76cb140da690df002ba213ddd5 (patch)
treed679a5a8910eb0e09693e4d03f0492a4c3ea8b0f /sources/scalac/Global.java
parentca196dd13c1008176b162d006838767e8b4d83b7 (diff)
downloadscala-49332fe728c05d76cb140da690df002ba213ddd5.tar.gz
scala-49332fe728c05d76cb140da690df002ba213ddd5.tar.bz2
scala-49332fe728c05d76cb140da690df002ba213ddd5.zip
- Added methods Global.getSourceFile
- Renamed bytes into content in SourceFile - Replaced SourceFile constructors by SourceFile(AbstractFile, byte[])
Diffstat (limited to 'sources/scalac/Global.java')
-rw-r--r--sources/scalac/Global.java45
1 files changed, 31 insertions, 14 deletions
diff --git a/sources/scalac/Global.java b/sources/scalac/Global.java
index c6885d6447..718c5c919b 100644
--- a/sources/scalac/Global.java
+++ b/sources/scalac/Global.java
@@ -19,7 +19,6 @@ import java.io.OutputStream;
import java.util.*;
import scala.tools.util.AbstractFile;
-import scala.tools.util.ByteArrayFile;
import scala.tools.util.Position;
import scala.tools.util.SourceFile;
@@ -256,6 +255,32 @@ public abstract class Global {
currentPhase = currentPhase.prev;
}
+ /** Creates a virtual source file with given name and content. */
+ public SourceFile getSourceFile(String sourcename, String content) {
+ return new SourceFile(sourcename, content.getBytes());
+ }
+
+ /** Reads and returns the source file in file with given name. */
+ public SourceFile getSourceFile(String filename) throws IOException {
+ return getSourceFile(AbstractFile.open(null, filename));
+ }
+
+ /** Reads and returns the source file in given abstract file. */
+ public SourceFile getSourceFile(AbstractFile file) throws IOException {
+ if (!file.exists()) throw new FileNotFoundException(
+ "source file '" + file.getPath() + "' could not be found");
+ byte[] content = file.read();
+ return new SourceFile(file, content);
+ }
+
+ /** Reads and returns the source file of given clasz. */
+ public SourceFile getSourceFile(Symbol clasz) throws IOException {
+ assert clasz.isClass() && clasz.isStatic(): Debug.show(clasz);
+ AbstractFile file = classPath.openFile(
+ SourceRepresentation.externalizeFileName(clasz, ".scala"));
+ return getSourceFile(file);
+ }
+
/** the top-level compilation process
*/
public void compile(String[] files, boolean console) {
@@ -263,17 +288,10 @@ public abstract class Global {
// parse files
List units = new ArrayList(files.length);
for (int i = 0; i < files.length; i++) {
- String filename = files[i];
- AbstractFile file = AbstractFile.open(null, filename);
- if (file.exists()) {
- try {
- SourceFile source = new SourceFile(file);
- units.add(new Unit(this, source, console));
- } catch (IOException exception) {
- error(exception.getMessage());
- }
- } else {
- error("file '" + filename + "' not found");
+ try {
+ units.add(new Unit(this, getSourceFile(files[i]), console));
+ } catch (IOException exception) {
+ error(exception.getMessage());
}
}
this.units = (Unit[])units.toArray(new Unit[units.size()]);
@@ -289,8 +307,7 @@ public abstract class Global {
*/
public void compile(String filename, String input, boolean console) {
reporter.resetCounters();
- ByteArrayFile file = new ByteArrayFile(filename, input.getBytes());
- SourceFile source = new SourceFile(file);
+ SourceFile source = getSourceFile(filename, input);
units = new Unit[]{new Unit(this, source, console)};
compile();
}