From ee0548e3236bb5cce7c7ac9120b784bc5ef72b73 Mon Sep 17 00:00:00 2001 From: Marcin Kosieradzki Date: Sat, 24 Jun 2017 21:46:49 +0200 Subject: [PATCH 1/2] Fixed codegen for maps --- cli/targets/static.js | 2 ++ src/decoder.js | 41 +++++++++++++++++++++++++---------------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/cli/targets/static.js b/cli/targets/static.js index 07dba6ed2..243d021ea 100644 --- a/cli/targets/static.js +++ b/cli/targets/static.js @@ -159,9 +159,11 @@ var shortVars = { "m": "message", "t": "tag", "l": "length", + "il": "innerLength", "c": "end", "c2": "end2", "k": "key", "ks": "keys", "ks2": "keys2", + "v": "value", "e": "error", "f": "impl", "o": "options", diff --git a/src/decoder.js b/src/decoder.js index 6dde6f82e..4351dbe14 100644 --- a/src/decoder.js +++ b/src/decoder.js @@ -19,7 +19,7 @@ function decoder(mtype) { var gen = util.codegen(["r", "l"], mtype.name + "$decode") ("if(!(r instanceof Reader))") ("r=Reader.create(r)") - ("var c=l===undefined?r.len:r.pos+l,m=new this.ctor" + (mtype.fieldsArray.filter(function(field) { return field.map; }).length ? ",k" : "")) + ("var c=l===undefined?r.len:r.pos+l,m=new this.ctor" + (mtype.fieldsArray.filter(function (field) { return field.map; }).length ? ",il,k,v" : "")) ("while(r.pos>>3){") + ("case 1:") + ("k=r.%s()", field.keyType) + ("break") + ("case 2:"); + if (types.basic[type] === undefined) gen + ("v=types[%i].decode(r,r.uint32())", i) + else gen + ("v=r.%s()", type); + gen + ("break") + ("}") + ("}"); + if (types.long[field.keyType] !== undefined) gen + ("%s[typeof k===\"object\"?util.longToHash(k):k]=v", ref) + else gen + ("%s[k]=v", ref); // Repeated fields } else if (field.repeated) { gen From 87ef8cee2d11a26029181cb28e7e9e0c906ad2e9 Mon Sep 17 00:00:00 2001 From: Marcin Kosieradzki Date: Sat, 24 Jun 2017 21:49:54 +0200 Subject: [PATCH 2/2] Added missing semicolons --- src/decoder.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/decoder.js b/src/decoder.js index 4351dbe14..1ce85262a 100644 --- a/src/decoder.js +++ b/src/decoder.js @@ -39,7 +39,7 @@ function decoder(mtype) { if (field.map) { gen ("il=r.pos+r.uint32()") ("if(%s===util.emptyObject)", ref) - ("%s={}", ref) + ("%s={}", ref); if (types.defaults[field.keyType] !== undefined) gen ("k = %j", types.defaults[field.keyType]); if (types.defaults[type] !== undefined) gen @@ -52,7 +52,7 @@ function decoder(mtype) { ("break") ("case 2:"); if (types.basic[type] === undefined) gen - ("v=types[%i].decode(r,r.uint32())", i) + ("v=types[%i].decode(r,r.uint32())", i); else gen ("v=r.%s()", type); gen @@ -60,7 +60,7 @@ function decoder(mtype) { ("}") ("}"); if (types.long[field.keyType] !== undefined) gen - ("%s[typeof k===\"object\"?util.longToHash(k):k]=v", ref) + ("%s[typeof k===\"object\"?util.longToHash(k):k]=v", ref); else gen ("%s[k]=v", ref); // Repeated fields