Skip to content

Commit 0cd1aaf

Browse files
committed
Add support for the-var and tests for parse-double/long
Signed-off-by: James Hamlin <jfhamlin@gmail.com>
1 parent d360288 commit 0cd1aaf

File tree

14 files changed

+177
-50
lines changed

14 files changed

+177
-50
lines changed

pkg/codegen/codegen.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,6 @@ func (g *Generator) generateASTNode(node *ast.Node) string {
393393
// OpLetFn
394394
// OpGo
395395
// OpCase
396-
// OpTheVar
397396
// OpNew
398397
case ast.OpTry:
399398
return g.generateTry(node)
@@ -442,6 +441,8 @@ func (g *Generator) generateASTNode(node *ast.Node) string {
442441
return g.generateHostInterop(node)
443442
case ast.OpMaybeHostForm:
444443
return g.generateMaybeHostForm(node)
444+
case ast.OpTheVar:
445+
return g.generateTheVar(node)
445446
default:
446447
fmt.Printf("Generating code for AST node: %T %+v\n", node.Sub, node.Sub)
447448
panic(fmt.Sprintf("unsupported AST node type %T", node.Sub))
@@ -892,10 +893,18 @@ func (g *Generator) generateMaybeHostForm(node *ast.Node) string {
892893
maybeHostNode := node.Sub.(*ast.MaybeHostFormNode)
893894
field := maybeHostNode.Field
894895

895-
switch maybeHostNode.Class {
896-
default:
897-
panic(fmt.Sprintf("unsupported host form class: %s.%s", maybeHostNode.Class, field))
898-
}
896+
panic(fmt.Sprintf("unsupported form: %s/%s", maybeHostNode.Class, field))
897+
}
898+
899+
func (g *Generator) generateTheVar(node *ast.Node) string {
900+
theVarNode := node.Sub.(*ast.TheVarNode)
901+
varSym := theVarNode.Var
902+
ns := varSym.Namespace()
903+
name := varSym.Symbol()
904+
905+
resultId := g.allocateTempVar()
906+
g.writef("%s := lang.InternVarName(lang.NewSymbol(\"%s\"), lang.NewSymbol(\"%s\"))\n", resultId, ns.Name(), name.Name())
907+
return resultId
899908
}
900909

901910
////////////////////////////////////////////////////////////////////////////////
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
(ns codegen.test.the-var)
2+
3+
(def foo 42)
4+
5+
(defn ^{:expected-output 42} -main []
6+
(.get #'foo))

pkg/codegen/testdata/codegen/test/the_var.go

Lines changed: 49 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/gen/gljimports/gljimports_darwin_amd64.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3798,7 +3798,6 @@ func RegisterImports(_register func(string, interface{})) {
37983798
_register("github.com/glojurelang/glojure/pkg/lang.NewMapValSeq", github_com_glojurelang_glojure_pkg_lang.NewMapValSeq)
37993799
_register("github.com/glojurelang/glojure/pkg/lang.NewMultiFn", github_com_glojurelang_glojure_pkg_lang.NewMultiFn)
38003800
_register("github.com/glojurelang/glojure/pkg/lang.NewNamespace", github_com_glojurelang_glojure_pkg_lang.NewNamespace)
3801-
_register("github.com/glojurelang/glojure/pkg/lang.NewNumberFormatError", github_com_glojurelang_glojure_pkg_lang.NewNumberFormatError)
38023801
_register("github.com/glojurelang/glojure/pkg/lang.NewPersistentArrayMapAsIfByAssoc", github_com_glojurelang_glojure_pkg_lang.NewPersistentArrayMapAsIfByAssoc)
38033802
_register("github.com/glojurelang/glojure/pkg/lang.NewPersistentHashMap", github_com_glojurelang_glojure_pkg_lang.NewPersistentHashMap)
38043803
_register("github.com/glojurelang/glojure/pkg/lang.NewRange", github_com_glojurelang_glojure_pkg_lang.NewRange)
@@ -3830,8 +3829,6 @@ func RegisterImports(_register func(string, interface{})) {
38303829
_register("github.com/glojurelang/glojure/pkg/lang.*NodeSeq", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NodeSeq)(nil)))
38313830
_register("github.com/glojurelang/glojure/pkg/lang.Nth", github_com_glojurelang_glojure_pkg_lang.Nth)
38323831
_register("github.com/glojurelang/glojure/pkg/lang.Nther", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.Nther)(nil)).Elem())
3833-
_register("github.com/glojurelang/glojure/pkg/lang.NumberFormatError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberFormatError)(nil)).Elem())
3834-
_register("github.com/glojurelang/glojure/pkg/lang.*NumberFormatError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberFormatError)(nil)))
38353832
_register("github.com/glojurelang/glojure/pkg/lang.NumberMethods", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberMethods)(nil)).Elem())
38363833
_register("github.com/glojurelang/glojure/pkg/lang.*NumberMethods", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberMethods)(nil)))
38373834
_register("github.com/glojurelang/glojure/pkg/lang.Numbers", github_com_glojurelang_glojure_pkg_lang.Numbers)

pkg/gen/gljimports/gljimports_darwin_arm64.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3798,7 +3798,6 @@ func RegisterImports(_register func(string, interface{})) {
37983798
_register("github.com/glojurelang/glojure/pkg/lang.NewMapValSeq", github_com_glojurelang_glojure_pkg_lang.NewMapValSeq)
37993799
_register("github.com/glojurelang/glojure/pkg/lang.NewMultiFn", github_com_glojurelang_glojure_pkg_lang.NewMultiFn)
38003800
_register("github.com/glojurelang/glojure/pkg/lang.NewNamespace", github_com_glojurelang_glojure_pkg_lang.NewNamespace)
3801-
_register("github.com/glojurelang/glojure/pkg/lang.NewNumberFormatError", github_com_glojurelang_glojure_pkg_lang.NewNumberFormatError)
38023801
_register("github.com/glojurelang/glojure/pkg/lang.NewPersistentArrayMapAsIfByAssoc", github_com_glojurelang_glojure_pkg_lang.NewPersistentArrayMapAsIfByAssoc)
38033802
_register("github.com/glojurelang/glojure/pkg/lang.NewPersistentHashMap", github_com_glojurelang_glojure_pkg_lang.NewPersistentHashMap)
38043803
_register("github.com/glojurelang/glojure/pkg/lang.NewRange", github_com_glojurelang_glojure_pkg_lang.NewRange)
@@ -3830,8 +3829,6 @@ func RegisterImports(_register func(string, interface{})) {
38303829
_register("github.com/glojurelang/glojure/pkg/lang.*NodeSeq", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NodeSeq)(nil)))
38313830
_register("github.com/glojurelang/glojure/pkg/lang.Nth", github_com_glojurelang_glojure_pkg_lang.Nth)
38323831
_register("github.com/glojurelang/glojure/pkg/lang.Nther", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.Nther)(nil)).Elem())
3833-
_register("github.com/glojurelang/glojure/pkg/lang.NumberFormatError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberFormatError)(nil)).Elem())
3834-
_register("github.com/glojurelang/glojure/pkg/lang.*NumberFormatError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberFormatError)(nil)))
38353832
_register("github.com/glojurelang/glojure/pkg/lang.NumberMethods", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberMethods)(nil)).Elem())
38363833
_register("github.com/glojurelang/glojure/pkg/lang.*NumberMethods", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberMethods)(nil)))
38373834
_register("github.com/glojurelang/glojure/pkg/lang.Numbers", github_com_glojurelang_glojure_pkg_lang.Numbers)

pkg/gen/gljimports/gljimports_js_wasm.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3798,7 +3798,6 @@ func RegisterImports(_register func(string, interface{})) {
37983798
_register("github.com/glojurelang/glojure/pkg/lang.NewMapValSeq", github_com_glojurelang_glojure_pkg_lang.NewMapValSeq)
37993799
_register("github.com/glojurelang/glojure/pkg/lang.NewMultiFn", github_com_glojurelang_glojure_pkg_lang.NewMultiFn)
38003800
_register("github.com/glojurelang/glojure/pkg/lang.NewNamespace", github_com_glojurelang_glojure_pkg_lang.NewNamespace)
3801-
_register("github.com/glojurelang/glojure/pkg/lang.NewNumberFormatError", github_com_glojurelang_glojure_pkg_lang.NewNumberFormatError)
38023801
_register("github.com/glojurelang/glojure/pkg/lang.NewPersistentArrayMapAsIfByAssoc", github_com_glojurelang_glojure_pkg_lang.NewPersistentArrayMapAsIfByAssoc)
38033802
_register("github.com/glojurelang/glojure/pkg/lang.NewPersistentHashMap", github_com_glojurelang_glojure_pkg_lang.NewPersistentHashMap)
38043803
_register("github.com/glojurelang/glojure/pkg/lang.NewRange", github_com_glojurelang_glojure_pkg_lang.NewRange)
@@ -3830,8 +3829,6 @@ func RegisterImports(_register func(string, interface{})) {
38303829
_register("github.com/glojurelang/glojure/pkg/lang.*NodeSeq", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NodeSeq)(nil)))
38313830
_register("github.com/glojurelang/glojure/pkg/lang.Nth", github_com_glojurelang_glojure_pkg_lang.Nth)
38323831
_register("github.com/glojurelang/glojure/pkg/lang.Nther", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.Nther)(nil)).Elem())
3833-
_register("github.com/glojurelang/glojure/pkg/lang.NumberFormatError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberFormatError)(nil)).Elem())
3834-
_register("github.com/glojurelang/glojure/pkg/lang.*NumberFormatError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberFormatError)(nil)))
38353832
_register("github.com/glojurelang/glojure/pkg/lang.NumberMethods", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberMethods)(nil)).Elem())
38363833
_register("github.com/glojurelang/glojure/pkg/lang.*NumberMethods", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberMethods)(nil)))
38373834
_register("github.com/glojurelang/glojure/pkg/lang.Numbers", github_com_glojurelang_glojure_pkg_lang.Numbers)

pkg/gen/gljimports/gljimports_linux_amd64.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3798,7 +3798,6 @@ func RegisterImports(_register func(string, interface{})) {
37983798
_register("github.com/glojurelang/glojure/pkg/lang.NewMapValSeq", github_com_glojurelang_glojure_pkg_lang.NewMapValSeq)
37993799
_register("github.com/glojurelang/glojure/pkg/lang.NewMultiFn", github_com_glojurelang_glojure_pkg_lang.NewMultiFn)
38003800
_register("github.com/glojurelang/glojure/pkg/lang.NewNamespace", github_com_glojurelang_glojure_pkg_lang.NewNamespace)
3801-
_register("github.com/glojurelang/glojure/pkg/lang.NewNumberFormatError", github_com_glojurelang_glojure_pkg_lang.NewNumberFormatError)
38023801
_register("github.com/glojurelang/glojure/pkg/lang.NewPersistentArrayMapAsIfByAssoc", github_com_glojurelang_glojure_pkg_lang.NewPersistentArrayMapAsIfByAssoc)
38033802
_register("github.com/glojurelang/glojure/pkg/lang.NewPersistentHashMap", github_com_glojurelang_glojure_pkg_lang.NewPersistentHashMap)
38043803
_register("github.com/glojurelang/glojure/pkg/lang.NewRange", github_com_glojurelang_glojure_pkg_lang.NewRange)
@@ -3830,8 +3829,6 @@ func RegisterImports(_register func(string, interface{})) {
38303829
_register("github.com/glojurelang/glojure/pkg/lang.*NodeSeq", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NodeSeq)(nil)))
38313830
_register("github.com/glojurelang/glojure/pkg/lang.Nth", github_com_glojurelang_glojure_pkg_lang.Nth)
38323831
_register("github.com/glojurelang/glojure/pkg/lang.Nther", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.Nther)(nil)).Elem())
3833-
_register("github.com/glojurelang/glojure/pkg/lang.NumberFormatError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberFormatError)(nil)).Elem())
3834-
_register("github.com/glojurelang/glojure/pkg/lang.*NumberFormatError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberFormatError)(nil)))
38353832
_register("github.com/glojurelang/glojure/pkg/lang.NumberMethods", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberMethods)(nil)).Elem())
38363833
_register("github.com/glojurelang/glojure/pkg/lang.*NumberMethods", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberMethods)(nil)))
38373834
_register("github.com/glojurelang/glojure/pkg/lang.Numbers", github_com_glojurelang_glojure_pkg_lang.Numbers)

pkg/gen/gljimports/gljimports_linux_arm64.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3798,7 +3798,6 @@ func RegisterImports(_register func(string, interface{})) {
37983798
_register("github.com/glojurelang/glojure/pkg/lang.NewMapValSeq", github_com_glojurelang_glojure_pkg_lang.NewMapValSeq)
37993799
_register("github.com/glojurelang/glojure/pkg/lang.NewMultiFn", github_com_glojurelang_glojure_pkg_lang.NewMultiFn)
38003800
_register("github.com/glojurelang/glojure/pkg/lang.NewNamespace", github_com_glojurelang_glojure_pkg_lang.NewNamespace)
3801-
_register("github.com/glojurelang/glojure/pkg/lang.NewNumberFormatError", github_com_glojurelang_glojure_pkg_lang.NewNumberFormatError)
38023801
_register("github.com/glojurelang/glojure/pkg/lang.NewPersistentArrayMapAsIfByAssoc", github_com_glojurelang_glojure_pkg_lang.NewPersistentArrayMapAsIfByAssoc)
38033802
_register("github.com/glojurelang/glojure/pkg/lang.NewPersistentHashMap", github_com_glojurelang_glojure_pkg_lang.NewPersistentHashMap)
38043803
_register("github.com/glojurelang/glojure/pkg/lang.NewRange", github_com_glojurelang_glojure_pkg_lang.NewRange)
@@ -3830,8 +3829,6 @@ func RegisterImports(_register func(string, interface{})) {
38303829
_register("github.com/glojurelang/glojure/pkg/lang.*NodeSeq", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NodeSeq)(nil)))
38313830
_register("github.com/glojurelang/glojure/pkg/lang.Nth", github_com_glojurelang_glojure_pkg_lang.Nth)
38323831
_register("github.com/glojurelang/glojure/pkg/lang.Nther", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.Nther)(nil)).Elem())
3833-
_register("github.com/glojurelang/glojure/pkg/lang.NumberFormatError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberFormatError)(nil)).Elem())
3834-
_register("github.com/glojurelang/glojure/pkg/lang.*NumberFormatError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberFormatError)(nil)))
38353832
_register("github.com/glojurelang/glojure/pkg/lang.NumberMethods", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberMethods)(nil)).Elem())
38363833
_register("github.com/glojurelang/glojure/pkg/lang.*NumberMethods", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberMethods)(nil)))
38373834
_register("github.com/glojurelang/glojure/pkg/lang.Numbers", github_com_glojurelang_glojure_pkg_lang.Numbers)

pkg/gen/gljimports/gljimports_windows_amd64.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3798,7 +3798,6 @@ func RegisterImports(_register func(string, interface{})) {
37983798
_register("github.com/glojurelang/glojure/pkg/lang.NewMapValSeq", github_com_glojurelang_glojure_pkg_lang.NewMapValSeq)
37993799
_register("github.com/glojurelang/glojure/pkg/lang.NewMultiFn", github_com_glojurelang_glojure_pkg_lang.NewMultiFn)
38003800
_register("github.com/glojurelang/glojure/pkg/lang.NewNamespace", github_com_glojurelang_glojure_pkg_lang.NewNamespace)
3801-
_register("github.com/glojurelang/glojure/pkg/lang.NewNumberFormatError", github_com_glojurelang_glojure_pkg_lang.NewNumberFormatError)
38023801
_register("github.com/glojurelang/glojure/pkg/lang.NewPersistentArrayMapAsIfByAssoc", github_com_glojurelang_glojure_pkg_lang.NewPersistentArrayMapAsIfByAssoc)
38033802
_register("github.com/glojurelang/glojure/pkg/lang.NewPersistentHashMap", github_com_glojurelang_glojure_pkg_lang.NewPersistentHashMap)
38043803
_register("github.com/glojurelang/glojure/pkg/lang.NewRange", github_com_glojurelang_glojure_pkg_lang.NewRange)
@@ -3830,8 +3829,6 @@ func RegisterImports(_register func(string, interface{})) {
38303829
_register("github.com/glojurelang/glojure/pkg/lang.*NodeSeq", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NodeSeq)(nil)))
38313830
_register("github.com/glojurelang/glojure/pkg/lang.Nth", github_com_glojurelang_glojure_pkg_lang.Nth)
38323831
_register("github.com/glojurelang/glojure/pkg/lang.Nther", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.Nther)(nil)).Elem())
3833-
_register("github.com/glojurelang/glojure/pkg/lang.NumberFormatError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberFormatError)(nil)).Elem())
3834-
_register("github.com/glojurelang/glojure/pkg/lang.*NumberFormatError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberFormatError)(nil)))
38353832
_register("github.com/glojurelang/glojure/pkg/lang.NumberMethods", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberMethods)(nil)).Elem())
38363833
_register("github.com/glojurelang/glojure/pkg/lang.*NumberMethods", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberMethods)(nil)))
38373834
_register("github.com/glojurelang/glojure/pkg/lang.Numbers", github_com_glojurelang_glojure_pkg_lang.Numbers)

pkg/gen/gljimports/gljimports_windows_arm.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3798,7 +3798,6 @@ func RegisterImports(_register func(string, interface{})) {
37983798
_register("github.com/glojurelang/glojure/pkg/lang.NewMapValSeq", github_com_glojurelang_glojure_pkg_lang.NewMapValSeq)
37993799
_register("github.com/glojurelang/glojure/pkg/lang.NewMultiFn", github_com_glojurelang_glojure_pkg_lang.NewMultiFn)
38003800
_register("github.com/glojurelang/glojure/pkg/lang.NewNamespace", github_com_glojurelang_glojure_pkg_lang.NewNamespace)
3801-
_register("github.com/glojurelang/glojure/pkg/lang.NewNumberFormatError", github_com_glojurelang_glojure_pkg_lang.NewNumberFormatError)
38023801
_register("github.com/glojurelang/glojure/pkg/lang.NewPersistentArrayMapAsIfByAssoc", github_com_glojurelang_glojure_pkg_lang.NewPersistentArrayMapAsIfByAssoc)
38033802
_register("github.com/glojurelang/glojure/pkg/lang.NewPersistentHashMap", github_com_glojurelang_glojure_pkg_lang.NewPersistentHashMap)
38043803
_register("github.com/glojurelang/glojure/pkg/lang.NewRange", github_com_glojurelang_glojure_pkg_lang.NewRange)
@@ -3830,8 +3829,6 @@ func RegisterImports(_register func(string, interface{})) {
38303829
_register("github.com/glojurelang/glojure/pkg/lang.*NodeSeq", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NodeSeq)(nil)))
38313830
_register("github.com/glojurelang/glojure/pkg/lang.Nth", github_com_glojurelang_glojure_pkg_lang.Nth)
38323831
_register("github.com/glojurelang/glojure/pkg/lang.Nther", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.Nther)(nil)).Elem())
3833-
_register("github.com/glojurelang/glojure/pkg/lang.NumberFormatError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberFormatError)(nil)).Elem())
3834-
_register("github.com/glojurelang/glojure/pkg/lang.*NumberFormatError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberFormatError)(nil)))
38353832
_register("github.com/glojurelang/glojure/pkg/lang.NumberMethods", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberMethods)(nil)).Elem())
38363833
_register("github.com/glojurelang/glojure/pkg/lang.*NumberMethods", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.NumberMethods)(nil)))
38373834
_register("github.com/glojurelang/glojure/pkg/lang.Numbers", github_com_glojurelang_glojure_pkg_lang.Numbers)

0 commit comments

Comments
 (0)