Using a basic type w/ no default along w/ computed types & basic types with defaults lead to invalid code being generated
wwerner opened this issue · 1 comments
wwerner commented
Example:
event SchemaDefined {
type eventType
timestamp occurredOn
version eventVersion
string foo
string[] bar = {"baz","qux","quux"}
int i = 4242
}
Resulting code:
package io.vlingo.examples.schemata.event;
import io.vlingo.lattice.model.DomainEvent;
import java.lang.String;
public final class SchemaDefined extends DomainEvent {
public final String eventType;
public final long occurredOn;
public final int eventVersion;
public final String foo;
public String[] bar = new java.lang.String[] { "baz", "qux", "quux" };
public int i = 4242;
public SchemaDefined(final String foo, final String[] bar, final int i) {
this.eventType = "SchemaDefined";
this.occurredOn = System.currentTimeMillis();
this.eventVersion = io.vlingo.common.version.SemanticVersion.toValue("0.0.1");
this.foo = foo;
this.bar = bar;
this.i = i; }
public SchemaDefined() {
this.eventType = "SchemaDefined";
this.occurredOn = System.currentTimeMillis();
this.eventVersion = io.vlingo.common.version.SemanticVersion.toValue("0.0.1");}
}
Compilation error:
...event/SchemaDefined.java:[30,83] variable foo might not have been initialized
VaughnVernon commented
@wwerner Both variables must be final. You should assign the defaults in the zero-arg ctor, not in the variable decl.