Skip to content

Commit a66f764

Browse files
committed
Other: Omit copying of undefined or null in constructors and .create, see #743
1 parent 1c4d9d7 commit a66f764

File tree

8 files changed

+142
-74
lines changed

8 files changed

+142
-74
lines changed

src/class.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,8 @@ Class.generate = function generate(type) { // eslint-disable-line no-unused-vars
8484
else if (field.repeated) gen
8585
("this%s=[]", util.safeProp(field.name));
8686
return gen
87-
("if(p){")
88-
("for(var ks=Object.keys(p),i=0;i<ks.length;++i)")
89-
("this[ks[i]]=p[ks[i]];")
90-
("}");
87+
("if(p)for(var ks=Object.keys(p),i=0;i<ks.length;++i)if(p[ks[i]]!=null)") // omit undefined or null
88+
("this[ks[i]]=p[ks[i]]");
9189
/* eslint-enable no-unexpected-multiline */
9290
};
9391

tests/data/comments.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ $root.Test1 = (function() {
3333
function Test1(properties) {
3434
if (properties)
3535
for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
36-
this[keys[i]] = properties[keys[i]];
36+
if (properties[keys[i]] != null)
37+
this[keys[i]] = properties[keys[i]];
3738
}
3839

3940
/**
@@ -244,7 +245,8 @@ $root.Test2 = (function() {
244245
function Test2(properties) {
245246
if (properties)
246247
for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
247-
this[keys[i]] = properties[keys[i]];
248+
if (properties[keys[i]] != null)
249+
this[keys[i]] = properties[keys[i]];
248250
}
249251

250252
/**

tests/data/convert.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ $root.Message = (function() {
4040
this.int64Map = {};
4141
if (properties)
4242
for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
43-
this[keys[i]] = properties[keys[i]];
43+
if (properties[keys[i]] != null)
44+
this[keys[i]] = properties[keys[i]];
4445
}
4546

4647
/**

tests/data/mapbox/vector_tile.js

+8-4
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ $root.vector_tile = (function() {
3737
this.layers = [];
3838
if (properties)
3939
for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
40-
this[keys[i]] = properties[keys[i]];
40+
if (properties[keys[i]] != null)
41+
this[keys[i]] = properties[keys[i]];
4142
}
4243

4344
/**
@@ -252,7 +253,8 @@ $root.vector_tile = (function() {
252253
function Value(properties) {
253254
if (properties)
254255
for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
255-
this[keys[i]] = properties[keys[i]];
256+
if (properties[keys[i]] != null)
257+
this[keys[i]] = properties[keys[i]];
256258
}
257259

258260
/**
@@ -587,7 +589,8 @@ $root.vector_tile = (function() {
587589
this.geometry = [];
588590
if (properties)
589591
for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
590-
this[keys[i]] = properties[keys[i]];
592+
if (properties[keys[i]] != null)
593+
this[keys[i]] = properties[keys[i]];
591594
}
592595

593596
/**
@@ -911,7 +914,8 @@ $root.vector_tile = (function() {
911914
this.values = [];
912915
if (properties)
913916
for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
914-
this[keys[i]] = properties[keys[i]];
917+
if (properties[keys[i]] != null)
918+
this[keys[i]] = properties[keys[i]];
915919
}
916920

917921
/**

tests/data/package.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ $root.Package = (function() {
5151
this.cliDependencies = [];
5252
if (properties)
5353
for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
54-
this[keys[i]] = properties[keys[i]];
54+
if (properties[keys[i]] != null)
55+
this[keys[i]] = properties[keys[i]];
5556
}
5657

5758
/**
@@ -681,7 +682,8 @@ $root.Package = (function() {
681682
function Repository(properties) {
682683
if (properties)
683684
for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
684-
this[keys[i]] = properties[keys[i]];
685+
if (properties[keys[i]] != null)
686+
this[keys[i]] = properties[keys[i]];
685687
}
686688

687689
/**

tests/data/rpc-es6.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ export const MyRequest = $root.MyRequest = (() => {
8383
function MyRequest(properties) {
8484
if (properties)
8585
for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
86-
this[keys[i]] = properties[keys[i]];
86+
if (properties[keys[i]] != null)
87+
this[keys[i]] = properties[keys[i]];
8788
}
8889

8990
/**
@@ -256,7 +257,8 @@ export const MyResponse = $root.MyResponse = (() => {
256257
function MyResponse(properties) {
257258
if (properties)
258259
for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
259-
this[keys[i]] = properties[keys[i]];
260+
if (properties[keys[i]] != null)
261+
this[keys[i]] = properties[keys[i]];
260262
}
261263

262264
/**

tests/data/rpc.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ $root.MyRequest = (function() {
8585
function MyRequest(properties) {
8686
if (properties)
8787
for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
88-
this[keys[i]] = properties[keys[i]];
88+
if (properties[keys[i]] != null)
89+
this[keys[i]] = properties[keys[i]];
8990
}
9091

9192
/**
@@ -258,7 +259,8 @@ $root.MyResponse = (function() {
258259
function MyResponse(properties) {
259260
if (properties)
260261
for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
261-
this[keys[i]] = properties[keys[i]];
262+
if (properties[keys[i]] != null)
263+
this[keys[i]] = properties[keys[i]];
262264
}
263265

264266
/**

0 commit comments

Comments
 (0)