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):
return
name = globalVar.pyName or globalVar.name
valTyp = 'Any'
if guessTypeInt(globalVar):
valTyp = '0'
valTyp = 'int'
elif guessTypeFloat(globalVar):
valTyp = '0.0'
valTyp = 'float'
elif guessTypeStr(globalVar):
valTyp = '""'
else:
valTyp = globalVar.type
valTyp = valTyp.replace('const ', '')
valTyp = valTyp.replace('*', '')
valTyp = valTyp.replace('&', '')
valTyp = valTyp.replace(' ', '')
valTyp = self.fixWxPrefix(valTyp)
valTyp += '()'
stream.write('%s = %s\n' % (name, valTyp))
valTyp = 'str'
elif globalVar.type:
valTyp = self.cleanType(globalVar.type) or valTyp
stream.write(f'{name}: {valTyp}\n')
#-----------------------------------------------------------------------
def generateDefine(self, define, stream):
@@ -259,10 +253,11 @@ class PiWrapperGenerator(generators.WrapperGeneratorBase, FixWxPrefix):
if define.ignored or piIgnored(define):
return
# 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:
stream.write('%s = ""\n' % (define.pyName or define.name))
stream.write(f'{name}: str\n')
else:
stream.write('%s = 0\n' % (define.pyName or define.name))
stream.write(f'{name}: int\n')
#-----------------------------------------------------------------------
def generateTypedef(self, typedef, stream, indent=''):