about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2024-12-17 17:07:46 +0100
committerbptato <nincsnevem662@gmail.com>2024-12-17 17:07:46 +0100
commitf2eae49c8b9eb877c437f802590677b26f631f42 (patch)
tree72236e7b50dcf278a7d6bcaf9f48df0ed4e68f95
parent48a69e1b774092c8b55cbbd5281b6d61d1cd2556 (diff)
downloadchawan-f2eae49c8b9eb877c437f802590677b26f631f42.tar.gz
default(T) -> T.default, add some strict defs
-rw-r--r--adapter/img/sixel.nim4
-rw-r--r--adapter/protocol/lcgi.nim12
-rw-r--r--adapter/protocol/man.nim4
-rw-r--r--doc/hacking.md2
-rw-r--r--src/config/config.nim6
-rw-r--r--src/config/toml.nim2
-rw-r--r--src/css/cascade.nim12
-rw-r--r--src/html/dom.nim2
-rw-r--r--src/html/formdata.nim2
-rw-r--r--src/io/bufreader.nim2
-rw-r--r--src/io/promise.nim6
-rw-r--r--src/local/pager.nim4
-rw-r--r--src/server/buffer.nim4
-rw-r--r--src/server/forkserver.nim4
-rw-r--r--src/server/loader.nim4
-rw-r--r--src/types/cookie.nim10
-rw-r--r--src/types/url.nim2
-rw-r--r--src/utils/luwrap.nim4
-rw-r--r--src/utils/twtstr.nim3
19 files changed, 45 insertions, 44 deletions
diff --git a/adapter/img/sixel.nim b/adapter/img/sixel.nim
index 61227edd..d3d04033 100644
--- a/adapter/img/sixel.nim
+++ b/adapter/img/sixel.nim
@@ -149,7 +149,7 @@ proc trim(trimMap: var TrimMap; K: var uint) =
 
 proc quantize(img: openArray[RGBAColorBE]; outk: var uint;
     outTransparent: var bool): NodeChildren =
-  var root = default(NodeChildren)
+  var root = NodeChildren.default
   if outk <= 2: # monochrome; not much we can do with an octree...
     root[0] = cast[Node](alloc0(sizeof(NodeObj)))
     root[0].u.leaf.c = rgb(0, 0, 0)
@@ -209,7 +209,7 @@ type
 proc getColor(nodes: seq[Node]; c: ARGBColor; diff: var DitherDiff): Node =
   var child: Node = nil
   var minDist = uint32.high
-  var mdiff = default(DitherDiff)
+  var mdiff = DitherDiff.default
   for node in nodes:
     let ic = node.u.leaf.c
     let ad = int32(c.a) - 100
diff --git a/adapter/protocol/lcgi.nim b/adapter/protocol/lcgi.nim
index a2da4cc8..fbaa6aa2 100644
--- a/adapter/protocol/lcgi.nim
+++ b/adapter/protocol/lcgi.nim
@@ -64,7 +64,7 @@ proc authenticateSocks5(os, ps: PosixStream; buf: array[2, uint8];
       os.die("InternalError", "username or password too long")
     let sbuf = "\x01" & char(user.len) & user & char(pass.len) & pass
     ps.sendDataLoop(sbuf)
-    var rbuf = default(array[2, uint8])
+    var rbuf = array[2, uint8].default
     ps.recvDataLoop(rbuf)
     if rbuf[0] != 1:
       os.die("ProxyInvalidResponse", "wrong auth version")
@@ -86,7 +86,7 @@ proc sendSocks5Domain(os, ps: PosixStream; host, port: string;
   let port = x.get
   let sbuf = "\x05\x01\x00" & dstaddr & char(port shr 8) & char(port and 0xFF)
   ps.sendDataLoop(sbuf)
-  var rbuf = default(array[4, uint8])
+  var rbuf = array[4, uint8].default
   ps.recvDataLoop(rbuf)
   if rbuf[0] != 5:
     os.die("ProxyInvalidResponse")
@@ -94,7 +94,7 @@ proc sendSocks5Domain(os, ps: PosixStream; host, port: string;
     os.die("ProxyRefusedToConnect")
   case rbuf[3]
   of 0x01:
-    var ipv4 = default(array[4, uint8])
+    var ipv4 = array[4, uint8].default
     ps.recvDataLoop(ipv4)
     outIpv6 = false
   of 0x03:
@@ -105,12 +105,12 @@ proc sendSocks5Domain(os, ps: PosixStream; host, port: string;
     # we don't really know, so just assume it's ipv4.
     outIpv6 = false
   of 0x04:
-    var ipv6 = default(array[16, uint8])
+    var ipv6 = array[16, uint8].default
     ps.recvDataLoop(ipv6)
     outIpv6 = true
   else:
     os.die("ProxyInvalidResponse")
-  var bndport = default(array[2, uint8])
+  var bndport = array[2, uint8].default
   ps.recvDataLoop(bndport)
 
 proc connectSocks5Socket(os: PosixStream; host, port, proxyHost, proxyPort,
@@ -121,7 +121,7 @@ proc connectSocks5Socket(os: PosixStream; host, port, proxyHost, proxyPort,
   const NoAuth = "\x05\x01\x00"
   const WithAuth = "\x05\x02\x00\x02"
   ps.sendDataLoop(if proxyUser != "": NoAuth else: WithAuth)
-  var buf = default(array[2, uint8])
+  var buf = array[2, uint8].default
   ps.recvDataLoop(buf)
   os.authenticateSocks5(ps, buf, proxyUser, proxyPass)
   os.sendSocks5Domain(ps, host, port, outIpv6)
diff --git a/adapter/protocol/man.nim b/adapter/protocol/man.nim
index 1b0724ad..265862bb 100644
--- a/adapter/protocol/man.nim
+++ b/adapter/protocol/man.nim
@@ -236,8 +236,8 @@ proc processManpage(ofile, efile: File; header, keyword: string) =
   efile.close()
 
 proc myOpen(cmd: string): tuple[ofile, efile: File] =
-  var opipe = default(array[2, cint])
-  var epipe = default(array[2, cint])
+  var opipe = array[2, cint].default
+  var epipe = array[2, cint].default
   if pipe(opipe) == -1 or pipe(epipe) == -1:
     return (nil, nil)
   case fork()
diff --git a/doc/hacking.md b/doc/hacking.md
index fe9e0e60..6aa409c2 100644
--- a/doc/hacking.md
+++ b/doc/hacking.md
@@ -114,7 +114,7 @@ let myObj = MyObject(
 For arrays, use:
 
 ```nim
-var buf1 = default(array[1234, char]) # when you need 0-initialization
+var buf1 = array[1234, char].default # when you need 0-initialization
 var buf2 {.noinit.}: array[1234, char] # when you don't need 0-initialization
 ```
 
diff --git a/src/config/config.nim b/src/config/config.nim
index fb740e81..2e0eaacf 100644
--- a/src/config/config.nim
+++ b/src/config/config.nim
@@ -607,7 +607,7 @@ proc parseConfigValue(ctx: var ConfigParser; x: var MimeTypes; v: TomlValue;
     k: string) =
   var paths: seq[ChaPathResolved]
   ctx.parseConfigValue(paths, v, k)
-  x = default(MimeTypes)
+  x = MimeTypes.default
   for p in paths:
     let ps = newPosixStream(p)
     if ps != nil:
@@ -620,7 +620,7 @@ proc parseConfigValue(ctx: var ConfigParser; x: var Mailcap; v: TomlValue;
     k: string) =
   var paths: seq[ChaPathResolved]
   ctx.parseConfigValue(paths, v, k)
-  x = default(Mailcap)
+  x = Mailcap.default
   for p in paths:
     let ps = newPosixStream(p)
     if ps != nil:
@@ -657,7 +657,7 @@ proc parseConfigValue(ctx: var ConfigParser; x: var URIMethodMap; v: TomlValue;
     k: string) =
   var paths: seq[ChaPathResolved]
   ctx.parseConfigValue(paths, v, k)
-  x = default(URIMethodMap)
+  x = URIMethodMap.default
   for p in paths:
     let ps = newPosixStream(p)
     if ps != nil:
diff --git a/src/config/toml.nim b/src/config/toml.nim
index 64c908ea..296c7766 100644
--- a/src/config/toml.nim
+++ b/src/config/toml.nim
@@ -283,7 +283,7 @@ proc consumeComment(state: var TomlParser; buf: openArray[char]) =
 
 proc consumeKey(state: var TomlParser; buf: openArray[char]):
     Result[seq[string], TomlError] =
-  var res: seq[string]
+  var res: seq[string] = @[]
   var str = ""
   while state.has(buf):
     let c = state.consume(buf)
diff --git a/src/css/cascade.nim b/src/css/cascade.nim
index 9a49cf48..7da77664 100644
--- a/src/css/cascade.nim
+++ b/src/css/cascade.nim
@@ -232,9 +232,9 @@ func buildComputedValues(rules: CSSValueEntryMap;
     presHints: openArray[CSSComputedEntry]; parent: CSSValues):
     CSSValues =
   new(result)
-  var inited = default(array[CSSPropertyType, bool])
-  var uaInited = default(array[CSSPropertyType, bool])
-  var userInited = default(array[CSSPropertyType, bool])
+  var inited = array[CSSPropertyType, bool].default
+  var uaInited = array[CSSPropertyType, bool].default
+  var userInited = array[CSSPropertyType, bool].default
   for entry in rules[coUserAgent].normal: # user agent
     result.applyValue(entry, parent, nil, inited)
     inited[entry.t] = true
@@ -333,10 +333,10 @@ func applyMediaQuery(ss: CSSStylesheet; window: Window): CSSStylesheet =
 func calcRules(styledNode: StyledNode; ua, user: CSSStylesheet;
     author: seq[CSSStylesheet]): RuleListMap =
   let uadecls = calcRules(styledNode, ua)
-  var userdecls: RuleList
+  var userdecls = RuleList.default
   if user != nil:
     userdecls = calcRules(styledNode, user)
-  var authordecls: seq[RuleList]
+  var authordecls: seq[RuleList] = @[]
   for rule in author:
     authordecls.add(calcRules(styledNode, rule))
   return RuleListMap(
@@ -362,7 +362,7 @@ type CascadeFrame = object
   parentDeclMap: RuleListMap
 
 proc getAuthorSheets(document: Document): seq[CSSStylesheet] =
-  var author: seq[CSSStylesheet]
+  var author: seq[CSSStylesheet] = @[]
   for sheet in document.sheets():
     author.add(sheet.applyMediaQuery(document.window))
   return author
diff --git a/src/html/dom.nim b/src/html/dom.nim
index fdadd5f7..b8ab0787 100644
--- a/src/html/dom.nim
+++ b/src/html/dom.nim
@@ -526,7 +526,7 @@ proc reset(state: var DrawingState) =
 
 proc create2DContext(jctx: JSContext; target: HTMLCanvasElement;
     options = JS_UNDEFINED) =
-  var pipefd: array[2, cint]
+  var pipefd {.noinit.}: array[2, cint]
   if pipe(pipefd) == -1:
     return
   let window = jctx.getWindow()
diff --git a/src/html/formdata.nim b/src/html/formdata.nim
index 808609d4..99fa1c5b 100644
--- a/src/html/formdata.nim
+++ b/src/html/formdata.nim
@@ -16,7 +16,7 @@ proc constructEntryList*(form: HTMLFormElement; submitter: Element = nil;
     encoding = "UTF-8"): seq[FormDataEntry]
 
 proc generateBoundary(urandom: PosixStream): string =
-  var s: array[33, uint8]
+  var s {.noinit.}: array[33, uint8]
   urandom.recvDataLoop(s)
   # 33 * 4 / 3 = 44 + prefix string is 22 bytes = 66 bytes
   return "----WebKitFormBoundary" & btoa(s)
diff --git a/src/io/bufreader.nim b/src/io/bufreader.nim
index c7ec04b1..5267d198 100644
--- a/src/io/bufreader.nim
+++ b/src/io/bufreader.nim
@@ -38,7 +38,7 @@ proc initReader*(stream: DynStream; len, auxLen: int): BufferedReader =
   return reader
 
 proc initPacketReader*(stream: DynStream): BufferedReader =
-  var len: array[2, int]
+  var len {.noinit.}: array[2, int]
   stream.recvDataLoop(addr len[0], sizeof(len))
   return stream.initReader(len[0], len[1])
 
diff --git a/src/io/promise.nim b/src/io/promise.nim
index a53f530b..544ed0a2 100644
--- a/src/io/promise.nim
+++ b/src/io/promise.nim
@@ -187,7 +187,7 @@ proc fromJS*(ctx: JSContext; val: JSValue; res: var EmptyPromise): Opt[void] =
 proc toJS*(ctx: JSContext; promise: EmptyPromise): JSValue =
   if promise == nil:
     return JS_NULL
-  var resolvingFuncs: array[2, JSValue]
+  var resolvingFuncs {.noinit.}: array[2, JSValue]
   let jsPromise = JS_NewPromiseCapability(ctx, resolvingFuncs.toJSValueArray())
   if JS_IsException(jsPromise):
     return JS_EXCEPTION
@@ -201,7 +201,7 @@ proc toJS*(ctx: JSContext; promise: EmptyPromise): JSValue =
 proc toJS*[T](ctx: JSContext; promise: Promise[T]): JSValue =
   if promise == nil:
     return JS_NULL
-  var resolvingFuncs: array[2, JSValue]
+  var resolvingFuncs {.noinit.}: array[2, JSValue]
   let jsPromise = JS_NewPromiseCapability(ctx, resolvingFuncs.toJSValueArray())
   if JS_IsException(jsPromise):
     return JS_EXCEPTION
@@ -218,7 +218,7 @@ proc toJS*[T](ctx: JSContext; promise: Promise[T]): JSValue =
 proc toJS*[T, E](ctx: JSContext; promise: Promise[Result[T, E]]): JSValue =
   if promise == nil:
     return JS_NULL
-  var resolvingFuncs: array[2, JSValue]
+  var resolvingFuncs {.noinit.}: array[2, JSValue]
   let jsPromise = JS_NewPromiseCapability(ctx, resolvingFuncs.toJSValueArray())
   if JS_IsException(jsPromise):
     return JS_EXCEPTION
diff --git a/src/local/pager.nim b/src/local/pager.nim
index c457f836..b378bbba 100644
--- a/src/local/pager.nim
+++ b/src/local/pager.nim
@@ -1976,7 +1976,7 @@ proc loadURL(pager: Pager; url: string; ctype = none(string);
       none(URL)
     discard pager.gotoURL(newRequest(firstparse.get), prev, ctype, cs)
     return
-  var urls: seq[URL]
+  var urls: seq[URL] = @[]
   if pager.config.network.prepend_https and
       pager.config.network.prepend_scheme != "" and url[0] != '/':
     let pageurl = parseURL(pager.config.network.prepend_scheme & url)
@@ -2207,7 +2207,7 @@ proc updateReadLine(pager: Pager) =
         else:
           pager.saveTo(data, lineedit.news)
       of lmMailcap:
-        var mailcap = default(Mailcap)
+        var mailcap = Mailcap.default
         let res = mailcap.parseMailcap(lineedit.news)
         let data = LineDataMailcap(pager.lineData)
         if res.isSome and mailcap.len == 1:
diff --git a/src/server/buffer.nim b/src/server/buffer.nim
index da9b8bb5..bbae50f2 100644
--- a/src/server/buffer.nim
+++ b/src/server/buffer.nim
@@ -295,7 +295,7 @@ macro proxy1(fun: typed) =
   pfun.iname = ident(fun[0].strVal & "_internal")
   pfun.ename = iproc[1]
   pfun.params.add(fun[3][0])
-  var params2: seq[NimNode]
+  var params2: seq[NimNode] = @[]
   params2.add(fun[3][0])
   for i in 1 ..< fun[3].len:
     let param = fun[3][i]
@@ -956,7 +956,7 @@ var gpstream* {.global.}: SocketStream
 # Create an exact clone of the current buffer.
 # This clone will share the loader process with the previous buffer.
 proc clone*(buffer: Buffer; newurl: URL): int {.proxy.} =
-  var pipefd: array[2, cint]
+  var pipefd {.noinit.}: array[2, cint]
   if pipe(pipefd) == -1:
     buffer.estream.write("Failed to open pipe.\n")
     return -1
diff --git a/src/server/forkserver.nim b/src/server/forkserver.nim
index 5fedf484..3352b39d 100644
--- a/src/server/forkserver.nim
+++ b/src/server/forkserver.nim
@@ -81,7 +81,7 @@ proc trapSIGINT() =
   setControlCHook(proc() {.noconv.} = discard)
 
 proc forkLoader(ctx: var ForkServerContext; config: LoaderConfig): int =
-  var pipefd: array[2, cint]
+  var pipefd {.noinit.}: array[2, cint]
   if pipe(pipefd) == -1:
     raise newException(Defect, "Failed to open pipe.")
   stdout.flushFile()
@@ -127,7 +127,7 @@ proc forkBuffer(ctx: var ForkServerContext; r: var BufferedReader): int =
   r.sread(attrs)
   r.sread(ishtml)
   r.sread(charsetStack)
-  var pipefd: array[2, cint]
+  var pipefd {.noinit.}: array[2, cint]
   if pipe(pipefd) == -1:
     raise newException(Defect, "Failed to open pipe.")
   stdout.flushFile()
diff --git a/src/server/loader.nim b/src/server/loader.nim
index 60e37610..31c4f767 100644
--- a/src/server/loader.nim
+++ b/src/server/loader.nim
@@ -1134,7 +1134,7 @@ proc addClient(ctx: LoaderContext; stream: SocketStream;
   r.sread(config)
   r.sread(clonedFrom)
   stream.withPacketWriter w:
-    if pid in ctx.clientData or key == default(ClientKey):
+    if pid in ctx.clientData or key == ClientKey.default:
       w.swrite(false)
     else:
       let client = ClientData(pid: pid, key: key, config: config)
@@ -1401,7 +1401,7 @@ proc initLoaderContext(fd: cint; config: LoaderConfig): LoaderContext =
       # pager's key is still null
       var key: ClientKey
       r.sread(key)
-      doAssert key == default(ClientKey)
+      doAssert key == ClientKey.default
     var cmd: LoaderCommand
     r.sread(cmd)
     doAssert cmd == lcAddClient
diff --git a/src/types/cookie.nim b/src/types/cookie.nim
index 486c6789..93d3757f 100644
--- a/src/types/cookie.nim
+++ b/src/types/cookie.nim
@@ -33,10 +33,10 @@ proc parseCookieDate(val: string): Option[DateTime] =
   var foundMonth = false
   var foundYear = false
   # date-token-list
-  var time: array[3, int]
-  var dayOfMonth: int
-  var month: int
-  var year: int
+  var time = array[3, int].default
+  var dayOfMonth = 0
+  var month = 0
+  var year = 0
   for dateToken in val.split(Delimiters):
     if dateToken == "": continue # *delimiter
     if not foundTime:
@@ -47,7 +47,7 @@ proc parseCookieDate(val: string): Option[DateTime] =
           if i > 2: break timeBlock # too many time fields
           # 1*2DIGIT
           if timeField.len != 1 and timeField.len != 2: break timeBlock
-          var timeFields: array[3, int]
+          var timeFields = array[3, int].default
           for c in timeField:
             if c notin AsciiDigit: break timeBlock
             timeFields[i] *= 10
diff --git a/src/types/url.nim b/src/types/url.nim
index 80df920d..cca36eea 100644
--- a/src/types/url.nim
+++ b/src/types/url.nim
@@ -108,7 +108,7 @@ func parseIpv6(input: openArray[char]): Option[array[8, uint16]] =
   var pieceindex = 0
   var compress = -1
   var pointer = 0
-  var address: array[8, uint16]
+  var address = array[8, uint16].default
 
   template c(i = 0): char = input[pointer + i]
   template has(i = 0): bool = (pointer + i < input.len)
diff --git a/src/utils/luwrap.nim b/src/utils/luwrap.nim
index bc1a64f8..06cf8d6e 100644
--- a/src/utils/luwrap.nim
+++ b/src/utils/luwrap.nim
@@ -34,7 +34,7 @@ proc mnormalize*(s: var string) =
 proc toUpperLU(s: string; n: cint): string =
   result = newStringOfCap(s.len)
   for u in s.points:
-    var outa: array[LRE_CC_RES_LEN_MAX, uint32]
+    var outa {.noinit.}: array[LRE_CC_RES_LEN_MAX, uint32]
     let n = lre_case_conv(cast[ptr UncheckedArray[uint32]](addr outa[0]), u, n)
     result.addUTF8(outa.toOpenArray(0, n - 1))
 
@@ -52,7 +52,7 @@ proc capitalizeLU*(s: string): string =
       wordStart = true
       result.addUTF8(u)
     elif wordStart:
-      var outa: array[LRE_CC_RES_LEN_MAX, uint32]
+      var outa {.noinit.}: array[LRE_CC_RES_LEN_MAX, uint32]
       let n = lre_case_conv(cast[ptr UncheckedArray[uint32]](addr outa[0]),
         u, 0)
       result.addUTF8(outa.toOpenArray(0, n - 1))
diff --git a/src/utils/twtstr.nim b/src/utils/twtstr.nim
index f6fd2680..5f3b8f74 100644
--- a/src/utils/twtstr.nim
+++ b/src/utils/twtstr.nim
@@ -469,6 +469,7 @@ func percentEncode*(s: openArray[char]; set: set[char]; spaceAsPlus = false):
   result.percentEncode(s, set, spaceAsPlus)
 
 func percentDecode*(input: openArray[char]): string =
+  result = ""
   var i = 0
   while i < input.len:
     let c = input[i]
@@ -741,7 +742,7 @@ func atob(c: char): uint8 {.inline.} =
 # (it should really be out string, just can't use out because of 1.6.14)
 func atob*(outs: var string; data: string): Err[cstring] =
   outs = newStringOfCap(data.len div 4 * 3)
-  var buf = default(array[4, uint8])
+  var buf = array[4, uint8].default
   var i = 0
   var j = 0
   var pad = 0