Overwriting an inherited calc field to not be calculated

I have the following type in packageA:

entity type MyType schema name 'COOL' {
  start: datetime stored calc "parent.start"
  parent: NotImportantType

both packageB and packageC depend on packageA, and packageB (as well as pretty much all future packages that will also depend on packageA) requires MyType.start == parent.start. packageC, however, requires MyType.start to be an upsertable datetime, no calculations required (and this application has already been built and is in production).

Is it possible to overwrite this inherited calc field to not be calculated?

I’ve tried the following type definitions in packageC to no avail:

remix type MyType {
  start: ~ datetime

which throws a provisioning error, and

remix type MyType {
  start: datetime

which results in start still being a calculated field with expression "parent.start"

Is this a bug?

@JohnCoker, @DavidT Is there a way in the type system to remix a type and make a field “not” calculated?

We don’t currently have a feature to make a field non-calculated. That would be a good enhancement request. This is part of a more general feature of provide negative versions of DSL syntax to un-configure things configured in a mixin.

(This is currently implemented with an annotation, but there is no way to clear an annotation so there isn’t an obvious work-around either.)

Ah, got it. Thanks for the info!

Should I make a ticket for this enhancement @JohnCoker ?

Hm, this looks wrong to me: I don’t believe one of the sub-types can change calc field expression of a base type in any way. E.g. for happens for the same field in another sub type ?

We could possibly allow such changes in a remix type but changing calc expression or un-require base field on one of the sub-types sounds wrong to me.

So I added PLAT-17884 - Allow remix types change (including clearing) of calc field and required-ness of the field