mirror of
https://github.com/github/codeql.git
synced 2025-12-18 09:43:15 +01:00
Swift: generalize synth constructors
Now all types get a default synth constructor.
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user