aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/shedlang/compiler/ShedCompiler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/shedlang/compiler/ShedCompiler.java')
-rw-r--r--src/main/java/org/shedlang/compiler/ShedCompiler.java21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/main/java/org/shedlang/compiler/ShedCompiler.java b/src/main/java/org/shedlang/compiler/ShedCompiler.java
index a57a3386..af47ff5c 100644
--- a/src/main/java/org/shedlang/compiler/ShedCompiler.java
+++ b/src/main/java/org/shedlang/compiler/ShedCompiler.java
@@ -36,11 +36,24 @@ public class ShedCompiler {
) throws IOException, InterruptedException {
var config = ProjectConfig.read(projectRoot);
- var sourceRoot = projectRoot.resolve("src");
-
- var sourceFilePaths = collectSourceFilePaths(sourceRoot);
+ // TODO: recursive dependencies
+ var projectRoots = new ArrayList<Path>();
+ projectRoots.add(projectRoot);
+ for (var dependency : config.dependencies()) {
+ projectRoots.add(dependency.path());
+ }
- var untypedNamespaceNodes = parseSource(sourceRoot, sourceFilePaths);
+ var untypedNamespaceNodes = projectRoots.stream()
+ .flatMap(root -> {
+ var sourceRoot = root.resolve("src");
+ try {
+ var sourceFilePaths = collectSourceFilePaths(sourceRoot);
+ return parseSource(sourceRoot, sourceFilePaths).stream();
+ } catch (IOException exception) {
+ throw new RuntimeException(exception);
+ }
+ })
+ .toList();
var namespaces = new ArrayList<ShidNamespace>();