Swift: generalize synth constructors

Now all types get a default synth constructor.
This commit is contained in:
Paolo Tranquilli
2022-08-15 16:12:19 +02:00
parent 8ba330a886
commit 1365d0911d
241 changed files with 1548 additions and 274 deletions

View File

@@ -166,17 +166,6 @@ class Synth:
name: str
first: bool = False
@dataclass
class FinalClass(Class):
is_final: ClassVar = True
is_derived_ipa: ClassVar = False
is_fresh_ipa: ClassVar = False
is_db: ClassVar = False
@property
def is_ipa(self):
return self.is_fresh_ipa or self.is_derived_ipa
@dataclass
class Param:
param: str
@@ -184,17 +173,30 @@ class Synth:
first: bool = False
@dataclass
class FinalClassIpa(FinalClass):
class FinalClass(Class):
is_final: ClassVar = True
is_derived_ipa: ClassVar = False
is_fresh_ipa: ClassVar = False
is_db: ClassVar = False
params: List["Synth.Param"] = field(default_factory=list)
def __post_init__(self):
if self.params:
self.params[0].first = True
@property
def is_ipa(self):
return self.is_fresh_ipa or self.is_derived_ipa
@property
def has_params(self) -> bool:
return bool(self.params)
@dataclass
class FinalClassIpa(FinalClass):
pass
@dataclass
class FinalClassDerivedIpa(FinalClassIpa):
is_derived_ipa: ClassVar = True
@@ -246,4 +248,4 @@ class Synth:
class ConstructorStub:
template: ClassVar = "ql_ipa_constructor_stub"
cls: Union["Synth.FinalClassDerivedIpa", "Synth.FinalClassFreshIpa"]
cls: "Synth.FinalClass"