From 70942aeb951b22e77d4355a4d6e7cb1aed405932 Mon Sep 17 00:00:00 2001 From: Roman Bataev Date: Wed, 8 Feb 2017 21:13:30 -0800 Subject: [PATCH] linter: Add edn dialect --- core/procs.go | 3 ++- core/read.go | 11 +++++++---- main.go | 4 ++++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/core/procs.go b/core/procs.go index 3f2d2465e..06951d9b8 100644 --- a/core/procs.go +++ b/core/procs.go @@ -32,6 +32,7 @@ const ( CLJ Dialect = iota CLJS JOKER + EDN ) func ensureArrayMap(args []Object, index int) *ArrayMap { @@ -1317,7 +1318,7 @@ func processData(data []byte) { } func ProcessLinterData(dialect Dialect) { - if dialect == JOKER { + if dialect == JOKER || dialect == EDN { return } reader := bytes.NewReader(linter_cljxData) diff --git a/core/read.go b/core/read.go index 27fa70bf2..1ad1a0e39 100644 --- a/core/read.go +++ b/core/read.go @@ -29,6 +29,7 @@ type ( const EOF = -1 var LINTER_MODE bool = false +var DIALECT Dialect var ( ARGS map[int]Symbol @@ -741,11 +742,13 @@ func makeSyntaxQuote(obj Object, env map[*string]Symbol, reader *Reader) Object func handleNoReaderError(reader *Reader, s Symbol) Object { if LINTER_MODE { - filename := "" - if reader.filename != nil { - filename = *reader.filename + if DIALECT != EDN { + filename := "" + if reader.filename != nil { + filename = *reader.filename + } + fmt.Fprintf(os.Stderr, "%s:%d:%d: Read warning: No reader function for tag %s\n", filename, reader.line, reader.column, s.ToString(false)) } - fmt.Fprintf(os.Stderr, "%s:%d:%d: Read warning: No reader function for tag %s\n", filename, reader.line, reader.column, s.ToString(false)) return Read(reader) } panic(MakeReadError(reader, "No reader function for tag "+s.ToString(false))) diff --git a/main.go b/main.go index 925236d81..53f3eebaa 100644 --- a/main.go +++ b/main.go @@ -149,6 +149,7 @@ func repl(phase Phase) { func configureLinterMode(dialect Dialect) { LINTER_MODE = true + DIALECT = dialect lm, _ := GLOBAL_ENV.Resolve(MakeSymbol("core/*linter-mode*")) lm.Value = Bool{B: true} ProcessLinterData(dialect) @@ -184,6 +185,9 @@ func main() { case "--lintjoker": configureLinterMode(JOKER) processFile(os.Args[2], PARSE) + case "--lintedn": + configureLinterMode(EDN) + processFile(os.Args[2], READ) default: processFile(os.Args[1], EVAL) }