diff options
author | Eduardo Julian | 2016-04-16 17:57:06 -0400 |
---|---|---|
committer | Eduardo Julian | 2016-04-16 17:57:06 -0400 |
commit | 011842da545d20721d3868ccd8992cb5b883eed3 (patch) | |
tree | da3c693643df12b0a12acdd7abb84f5dd16f9898 /src/lux/analyser/host.clj | |
parent | 6081db0c1d9d9ca140809d9685f26cb2675b0318 (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.clj | 21 |
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)]] |