Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(compiler): add a nested property to the test cases #140

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/compiler/compiler-core/src/parser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,12 @@ export class ProjectParser extends EventEmitter implements Parser {
}

const predicate = typeValue.getParent();

// TODO: handle nested object assignments
// if (TypeGuards.isPropertyAssignment(predicate)) {
// return this.storeTypeMetadata(typeValue, typeValue, typescriptType);
// }

if (!TypeGuards.isVariableDeclaration(predicate)) {
// This should never happen in real life, but technically an unassigned object literal expression is valid TypeScript.
return;
Expand Down
66 changes: 66 additions & 0 deletions src/compiler/targets/test/fixtures/Primitives/Primitives.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {Float, Integer, prefab} from '@diez/engine';
import {Color} from '@diez/prefabs';

interface ChildComponentData {
diez: number;
Expand All @@ -10,12 +11,57 @@ class ChildComponent extends prefab<ChildComponentData>() {
};
}

interface NestedPrefabComponentData {
diez: number;
child: ChildComponent;
color: Color;
}

class NestedPrefabComponent extends prefab<NestedPrefabComponentData>() {
defaults = {
diez: 0,
child: new ChildComponent(),
color: Color.hex('#fff'),
};
}

const colorBlack = Color.hex('#000');
const colorRed = Color.hex('#CE0000');

const child = new ChildComponent({
diez: 2,
});

const nestedPrefabComponent = new NestedPrefabComponent({
child,
diez: 1,
color: colorBlack,
});

const nestedPrefabComponentWithRedColor = new NestedPrefabComponent({
child,
diez: 1,
color: colorRed,
});

class EmptyComponent {}

const references = {
myRef: 10,
};

enum TEST_ENUM {
VALUE_1,
VALUE_2,
VALUE_3,
}

enum TEST_ENUM_STRING {
VALUE_1= 'VALUE_1',
VALUE_2= 'VALUE_2',
VALUE_3= 'VALUE_3',
}

/**
* Test object comment
*/
Expand All @@ -42,6 +88,26 @@ export const primitives = {

emptyChild: new EmptyComponent(),

// simple nested object
nested: {
propNumber: 10,
propPrefab: new ChildComponent({diez: 10}),
},

nestedPrefabs: nestedPrefabComponent,
nestedPrefabsWithOverride: nestedPrefabComponentWithRedColor,

// nested object with litteral string as property key
nestedStringProp: {
'prop string': 10,
},

// nested object with enum as property keys
nestedEnumProp: {
[TEST_ENUM.VALUE_1]: 10,
[TEST_ENUM_STRING.VALUE_1]: 10,
},

/**
* References too!
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package org.diez.targetTestStub

/**
* A component encapsulating color, including alpha transparency.
*
* You can use the provided static constructors [[Color.rgb]], [[Color.rgba]], [[Color.hsl]], [[Color.hsla]], and
* [[Color.hex]] to conveniently create color primitives using familiar patterns for color specification.
*
*/
data class Color(
/**
* Provides simple hue-saturation-lightness-alpha color data.
*
* 0
*/
val h: Float,
/**
* Provides simple hue-saturation-lightness-alpha color data.
*
* 0
*/
val s: Float,
/**
* Provides simple hue-saturation-lightness-alpha color data.
*
* 0
*/
val l: Float,
/**
* Provides simple hue-saturation-lightness-alpha color data.
*
* 1
*/
val a: Float
) {
companion object {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.diez.targetTestStub

data class NestedPrefabComponent(
/**
* 1
*/
val diez: Float,
/**
* - diez: `2`
*/
val child: ChildComponent,
/**
* hsla(0, 0, 0, 1)
*/
val color: Color
) {
companion object {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,18 @@ data class Primitives(
*/
val childs: Array<Array<ChildComponent>> = arrayOf<Array<ChildComponent>>(arrayOf<ChildComponent>(ChildComponent(10f))),
val emptyChild: EmptyComponent = EmptyComponent(),
/**
* - diez: `1`
* - child: ``
* - color: `hsla(0, 0, 0, 1)`
*/
val nestedPrefabs: NestedPrefabComponent = NestedPrefabComponent(1f, ChildComponent(2f), Color(0f, 0f, 0f, 1f)),
/**
* - diez: `1`
* - child: ``
* - color: `hsla(0, 1, 0.4, 1)`
*/
val nestedPrefabsWithOverride: NestedPrefabComponent = NestedPrefabComponent(1f, ChildComponent(2f), Color(0f, 1f, 0.403921568627451f, 1f)),
/**
* References too!
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"version":"2.3.6","fields":["name","type"],"fieldVectors":[["name//Primitives",[14,2.234]],["type//Primitives",[13,1.723]],["name//Primitives#number",[1,2.234]],["type//Primitives#number",[2,1.135]],["name//Primitives#integer",[3,2.234]],["type//Primitives#integer",[4,2.234]],["name//Primitives#float",[2,1.135]],["type//Primitives#float",[2,1.135]],["name//Primitives#string",[5,1.723]],["type//Primitives#string",[5,1.723]],["name//Primitives#boolean",[6,1.723]],["type//Primitives#boolean",[6,1.723]],["name//Primitives/child",[12,2.234]],["type//Primitives/child",[13,1.723]],["name//Primitives/emptyChild",[15,2.234]],["type//Primitives/emptyChild",[16,2.234]],["name//Primitives#referred",[17,2.234]],["type//Primitives#referred",[2,1.135]]],"invertedIndex":[["2",{"_index":10,"name":{},"type":{"/Primitives":{}}}],["3",{"_index":8,"name":{},"type":{"/Primitives":{}}}],["boolean",{"_index":6,"name":{"/Primitives#boolean":{}},"type":{"/Primitives#boolean":{}}}],["child",{"_index":12,"name":{"/Primitives/child":{}},"type":{}}],["childcomponent",{"_index":13,"name":{},"type":{"/Primitives/child":{},"/Primitives":{}}}],["childs",{"_index":14,"name":{"/Primitives":{}},"type":{}}],["emptychild",{"_index":15,"name":{"/Primitives/emptyChild":{}},"type":{}}],["emptycomponent",{"_index":16,"name":{},"type":{"/Primitives/emptyChild":{}}}],["emptylist",{"_index":11,"name":{"/Primitives":{}},"type":{}}],["float",{"_index":2,"name":{"/Primitives#float":{}},"type":{"/Primitives#number":{},"/Primitives#float":{},"/Primitives#referred":{}}}],["int",{"_index":4,"name":{},"type":{"/Primitives#integer":{}}}],["integer",{"_index":3,"name":{"/Primitives#integer":{}},"type":{}}],["integers",{"_index":7,"name":{"/Primitives":{}},"type":{}}],["number",{"_index":1,"name":{"/Primitives#number":{}},"type":{}}],["primitives",{"_index":0,"name":{"/Primitives":{}},"type":{"/Primitives":{}}}],["referred",{"_index":17,"name":{"/Primitives#referred":{}},"type":{}}],["string",{"_index":5,"name":{"/Primitives#string":{}},"type":{"/Primitives#string":{}}}],["strings",{"_index":9,"name":{"/Primitives":{}},"type":{}}]],"pipeline":[]}
{"version":"2.3.6","fields":["name","type"],"fieldVectors":[["name//Primitives",[14,2.893]],["type//Primitives",[13,1.897]],["name//Primitives#number",[1,2.893]],["type//Primitives#number",[2,0.727]],["name//Primitives#integer",[3,2.893]],["type//Primitives#integer",[4,2.996]],["name//Primitives#float",[2,0.702]],["type//Primitives#float",[2,0.727]],["name//Primitives#string",[5,2.4]],["type//Primitives#string",[5,2.485]],["name//Primitives#boolean",[6,2.4]],["type//Primitives#boolean",[6,2.485]],["name//Primitives/child",[12,2.075]],["type//Primitives/child",[13,1.897]],["name//Primitives/emptyChild",[15,2.893]],["type//Primitives/emptyChild",[16,2.996]],["name//Primitives/nestedPrefabs",[17,2.893]],["type//Primitives/nestedPrefabs",[18,2.485]],["name//Primitives/nestedPrefabs#diez",[19,2.4]],["type//Primitives/nestedPrefabs#diez",[2,0.727]],["name//Primitives/nestedPrefabs/child",[12,2.075]],["type//Primitives/nestedPrefabs/child",[13,1.897]],["name//Primitives/nestedPrefabs/color",[20,1.832]],["type//Primitives/nestedPrefabs/color",[20,1.897]],["name//Primitives/nestedPrefabs/color#h",[21,2.4]],["type//Primitives/nestedPrefabs/color#h",[2,0.727]],["name//Primitives/nestedPrefabs/color#s",[22,2.4]],["type//Primitives/nestedPrefabs/color#s",[2,0.727]],["name//Primitives/nestedPrefabs/color#l",[23,2.4]],["type//Primitives/nestedPrefabs/color#l",[2,0.727]],["name//Primitives/nestedPrefabs/color#a",[]],["type//Primitives/nestedPrefabs/color#a",[2,0.727]],["name//Primitives/nestedPrefabsWithOverride",[24,2.893]],["type//Primitives/nestedPrefabsWithOverride",[18,2.485]],["name//Primitives/nestedPrefabsWithOverride#diez",[19,2.4]],["type//Primitives/nestedPrefabsWithOverride#diez",[2,0.727]],["name//Primitives/nestedPrefabsWithOverride/child",[12,2.075]],["type//Primitives/nestedPrefabsWithOverride/child",[13,1.897]],["name//Primitives/nestedPrefabsWithOverride/color",[20,1.832]],["type//Primitives/nestedPrefabsWithOverride/color",[20,1.897]],["name//Primitives/nestedPrefabsWithOverride/color#h",[21,2.4]],["type//Primitives/nestedPrefabsWithOverride/color#h",[2,0.727]],["name//Primitives/nestedPrefabsWithOverride/color#s",[22,2.4]],["type//Primitives/nestedPrefabsWithOverride/color#s",[2,0.727]],["name//Primitives/nestedPrefabsWithOverride/color#l",[23,2.4]],["type//Primitives/nestedPrefabsWithOverride/color#l",[2,0.727]],["name//Primitives/nestedPrefabsWithOverride/color#a",[]],["type//Primitives/nestedPrefabsWithOverride/color#a",[2,0.727]],["name//Primitives#referred",[25,2.893]],["type//Primitives#referred",[2,0.727]]],"invertedIndex":[["2",{"_index":10,"name":{},"type":{"/Primitives":{}}}],["3",{"_index":8,"name":{},"type":{"/Primitives":{}}}],["boolean",{"_index":6,"name":{"/Primitives#boolean":{}},"type":{"/Primitives#boolean":{}}}],["child",{"_index":12,"name":{"/Primitives/child":{},"/Primitives/nestedPrefabs/child":{},"/Primitives/nestedPrefabsWithOverride/child":{}},"type":{}}],["childcomponent",{"_index":13,"name":{},"type":{"/Primitives/child":{},"/Primitives":{},"/Primitives/nestedPrefabs/child":{},"/Primitives/nestedPrefabsWithOverride/child":{}}}],["childs",{"_index":14,"name":{"/Primitives":{}},"type":{}}],["color",{"_index":20,"name":{"/Primitives/nestedPrefabs/color":{},"/Primitives/nestedPrefabsWithOverride/color":{}},"type":{"/Primitives/nestedPrefabs/color":{},"/Primitives/nestedPrefabsWithOverride/color":{}}}],["diez",{"_index":19,"name":{"/Primitives/nestedPrefabs#diez":{},"/Primitives/nestedPrefabsWithOverride#diez":{}},"type":{}}],["emptychild",{"_index":15,"name":{"/Primitives/emptyChild":{}},"type":{}}],["emptycomponent",{"_index":16,"name":{},"type":{"/Primitives/emptyChild":{}}}],["emptylist",{"_index":11,"name":{"/Primitives":{}},"type":{}}],["float",{"_index":2,"name":{"/Primitives#float":{}},"type":{"/Primitives#number":{},"/Primitives#float":{},"/Primitives/nestedPrefabs#diez":{},"/Primitives/nestedPrefabs/color#h":{},"/Primitives/nestedPrefabs/color#s":{},"/Primitives/nestedPrefabs/color#l":{},"/Primitives/nestedPrefabs/color#a":{},"/Primitives/nestedPrefabsWithOverride#diez":{},"/Primitives/nestedPrefabsWithOverride/color#h":{},"/Primitives/nestedPrefabsWithOverride/color#s":{},"/Primitives/nestedPrefabsWithOverride/color#l":{},"/Primitives/nestedPrefabsWithOverride/color#a":{},"/Primitives#referred":{}}}],["h",{"_index":21,"name":{"/Primitives/nestedPrefabs/color#h":{},"/Primitives/nestedPrefabsWithOverride/color#h":{}},"type":{}}],["int",{"_index":4,"name":{},"type":{"/Primitives#integer":{}}}],["integer",{"_index":3,"name":{"/Primitives#integer":{}},"type":{}}],["integers",{"_index":7,"name":{"/Primitives":{}},"type":{}}],["l",{"_index":23,"name":{"/Primitives/nestedPrefabs/color#l":{},"/Primitives/nestedPrefabsWithOverride/color#l":{}},"type":{}}],["nestedprefabcomponent",{"_index":18,"name":{},"type":{"/Primitives/nestedPrefabs":{},"/Primitives/nestedPrefabsWithOverride":{}}}],["nestedprefabs",{"_index":17,"name":{"/Primitives/nestedPrefabs":{}},"type":{}}],["nestedprefabswithoverride",{"_index":24,"name":{"/Primitives/nestedPrefabsWithOverride":{}},"type":{}}],["number",{"_index":1,"name":{"/Primitives#number":{}},"type":{}}],["primitives",{"_index":0,"name":{"/Primitives":{}},"type":{"/Primitives":{}}}],["referred",{"_index":25,"name":{"/Primitives#referred":{}},"type":{}}],["s",{"_index":22,"name":{"/Primitives/nestedPrefabs/color#s":{},"/Primitives/nestedPrefabsWithOverride/color#s":{}},"type":{}}],["string",{"_index":5,"name":{"/Primitives#string":{}},"type":{"/Primitives#string":{}}}],["strings",{"_index":9,"name":{"/Primitives":{}},"type":{}}]],"pipeline":[]}
Loading