mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-05 04:27:44 +00:00
* fix #16428 vmops now works for generic procs * remove duplication
This commit is contained in:
@@ -1954,14 +1954,6 @@ proc genProc*(c: PCtx; s: PSym): int
|
||||
|
||||
proc matches(s: PSym; x: string): bool =
|
||||
let y = x.split('.')
|
||||
var s = s
|
||||
for i in 1..y.len:
|
||||
if s == nil or (y[^i].cmpIgnoreStyle(s.name.s) != 0 and y[^i] != "*"):
|
||||
return false
|
||||
s = s.owner
|
||||
result = true
|
||||
|
||||
proc matches(s: PSym; y: varargs[string]): bool =
|
||||
var s = s
|
||||
for i in 1..y.len:
|
||||
if s == nil or (y[^i].cmpIgnoreStyle(s.name.s) != 0 and y[^i] != "*"):
|
||||
@@ -2024,11 +2016,11 @@ proc gen(c: PCtx; n: PNode; dest: var TDest; flags: TGenFlags = {}) =
|
||||
elif s.kind == skMethod:
|
||||
localError(c.config, n.info, "cannot call method " & s.name.s &
|
||||
" at compile time")
|
||||
elif matches(s, "stdlib", "marshal", "to"):
|
||||
elif matches(s, "stdlib.marshal.to"):
|
||||
# XXX marshal load&store should not be opcodes, but use the
|
||||
# general callback mechanisms.
|
||||
genMarshalLoad(c, n, dest)
|
||||
elif matches(s, "stdlib", "marshal", "$$"):
|
||||
elif matches(s, "stdlib.marshal.$$"):
|
||||
genMarshalStore(c, n, dest)
|
||||
else:
|
||||
genCall(c, n, dest)
|
||||
|
||||
@@ -567,6 +567,8 @@ else: # JS
|
||||
func tanh*[T: float32|float64](x: T): T {.importc: "Math.tanh", nodecl.}
|
||||
|
||||
func arcsin*[T: float32|float64](x: T): T {.importc: "Math.asin", nodecl.}
|
||||
# keep this as generic or update test in `tvmops.nim` to make sure we
|
||||
# keep testing that generic importc procs work
|
||||
func arccos*[T: float32|float64](x: T): T {.importc: "Math.acos", nodecl.}
|
||||
func arctan*[T: float32|float64](x: T): T {.importc: "Math.atan", nodecl.}
|
||||
func arctan2*[T: float32|float64](y, x: T): T {.importc: "Math.atan2", nodecl.}
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
discard """
|
||||
targets: "c cpp js"
|
||||
"""
|
||||
|
||||
#[
|
||||
test for vmops.nim
|
||||
]#
|
||||
|
||||
Reference in New Issue
Block a user