Better generated global variables

Use the more generic type rather than a literal type. Before, a type-checker
would infer an int defined this way as `Literal[0]` vs the more correctly
generic `int` for example.
This commit is contained in:
lojack5
2023-10-17 18:34:08 -06:00
parent 3e634c0794
commit ec15761d5b

View File

@@ -236,22 +236,16 @@ class PiWrapperGenerator(generators.WrapperGeneratorBase, FixWxPrefix):
if globalVar.ignored or piIgnored(globalVar): if globalVar.ignored or piIgnored(globalVar):
return return
name = globalVar.pyName or globalVar.name name = globalVar.pyName or globalVar.name
valTyp = 'Any'
if guessTypeInt(globalVar): if guessTypeInt(globalVar):
valTyp = '0' valTyp = 'int'
elif guessTypeFloat(globalVar): elif guessTypeFloat(globalVar):
valTyp = '0.0' valTyp = 'float'
elif guessTypeStr(globalVar): elif guessTypeStr(globalVar):
valTyp = '""' valTyp = 'str'
else: elif globalVar.type:
valTyp = globalVar.type valTyp = self.cleanType(globalVar.type) or valTyp
valTyp = valTyp.replace('const ', '') stream.write(f'{name}: {valTyp}\n')
valTyp = valTyp.replace('*', '')
valTyp = valTyp.replace('&', '')
valTyp = valTyp.replace(' ', '')
valTyp = self.fixWxPrefix(valTyp)
valTyp += '()'
stream.write('%s = %s\n' % (name, valTyp))
#----------------------------------------------------------------------- #-----------------------------------------------------------------------
def generateDefine(self, define, stream): def generateDefine(self, define, stream):
@@ -259,10 +253,11 @@ class PiWrapperGenerator(generators.WrapperGeneratorBase, FixWxPrefix):
if define.ignored or piIgnored(define): if define.ignored or piIgnored(define):
return return
# we're assuming that all #defines that are not ignored are integer or string values # we're assuming that all #defines that are not ignored are integer or string values
name = define.pyName or define.name
if '"' in define.value: if '"' in define.value:
stream.write('%s = ""\n' % (define.pyName or define.name)) stream.write(f'{name}: str\n')
else: else:
stream.write('%s = 0\n' % (define.pyName or define.name)) stream.write(f'{name}: int\n')
#----------------------------------------------------------------------- #-----------------------------------------------------------------------
def generateTypedef(self, typedef, stream, indent=''): def generateTypedef(self, typedef, stream, indent=''):