aboutsummaryrefslogtreecommitdiff
path: root/src/lux/analyser/host.clj
diff options
context:
space:
mode:
authorEduardo Julian2016-04-16 17:57:06 -0400
committerEduardo Julian2016-04-16 17:57:06 -0400
commit011842da545d20721d3868ccd8992cb5b883eed3 (patch)
treeda3c693643df12b0a12acdd7abb84f5dd16f9898 /src/lux/analyser/host.clj
parent6081db0c1d9d9ca140809d9685f26cb2675b0318 (diff)
- The REPL no longer dies as soon as the first error happens.
- Writing "exit" in the REPL, kills it. - Fixed a bug wherein checking the presence of multiple methods with the same name being implemented, the names would overwrite each other and make some methods become impossible to check. - Fixed an error when type-checking parameterized host types. - Fixed a bug when loading the .lux files in JARs in the class-path.
Diffstat (limited to 'src/lux/analyser/host.clj')
-rw-r--r--src/lux/analyser/host.clj21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/lux/analyser/host.clj b/src/lux/analyser/host.clj
index a2d6fd592..20028441c 100644
--- a/src/lux/analyser/host.clj
+++ b/src/lux/analyser/host.clj
@@ -675,7 +675,7 @@
mmap
(&/$OverridenMethodAnalysis =class-decl =name ?strict =anns =gvars =exceptions =inputs =output body)
- (assoc mmap =name =inputs)
+ (update-in mmap [=name] (fn [old-inputs] (if old-inputs (conj old-inputs =inputs) [=inputs])))
(&/$StaticMethodAnalysis _)
mmap
@@ -692,15 +692,16 @@
(or missing
(|let [[am-name am-inputs] abs-meth]
(if-let [meth-struct (get methods-map am-name)]
- (|let [=inputs meth-struct]
- (if (and (= (&/|length =inputs) (&/|length am-inputs))
- (&/fold2 (fn [prev mi ai]
- (|let [[iname itype] mi]
- (and prev (= (generic-class->simple-class itype) ai))))
- true
- =inputs am-inputs))
- nil
- abs-meth))
+ (if (some (fn [=inputs]
+ (and (= (&/|length =inputs) (&/|length am-inputs))
+ (&/fold2 (fn [prev mi ai]
+ (|let [[iname itype] mi]
+ (and prev (= (generic-class->simple-class itype) ai))))
+ true
+ =inputs am-inputs)))
+ meth-struct)
+ nil
+ abs-meth)
abs-meth))))
nil
abstract-methods)]]