mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-22 00:48:28 +00:00
Fix handling of +/-inf defaults in TS/rust/go/dart codegen (#7588)
+/-inf were not being handled, and so invalid typescript was being generated when a float/double had an infinite default value. NaN was being handled correctly. Co-authored-by: Derek Bailey <derekbailey@google.com> Co-authored-by: Casper <casperneo@uchicago.edu>
This commit is contained in:
@@ -1615,7 +1615,63 @@ class Monster(object):
|
||||
return self._tab.Get(flatbuffers.number_types.Uint64Flags, o + self._tab.Pos)
|
||||
return 2
|
||||
|
||||
def MonsterStart(builder): builder.StartObject(54)
|
||||
# Monster
|
||||
def NanDefault(self):
|
||||
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(112))
|
||||
if o != 0:
|
||||
return self._tab.Get(flatbuffers.number_types.Float32Flags, o + self._tab.Pos)
|
||||
return float('nan')
|
||||
|
||||
# Monster
|
||||
def InfDefault(self):
|
||||
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(114))
|
||||
if o != 0:
|
||||
return self._tab.Get(flatbuffers.number_types.Float32Flags, o + self._tab.Pos)
|
||||
return float('inf')
|
||||
|
||||
# Monster
|
||||
def PositiveInfDefault(self):
|
||||
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(116))
|
||||
if o != 0:
|
||||
return self._tab.Get(flatbuffers.number_types.Float32Flags, o + self._tab.Pos)
|
||||
return float('inf')
|
||||
|
||||
# Monster
|
||||
def InfinityDefault(self):
|
||||
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(118))
|
||||
if o != 0:
|
||||
return self._tab.Get(flatbuffers.number_types.Float32Flags, o + self._tab.Pos)
|
||||
return float('inf')
|
||||
|
||||
# Monster
|
||||
def PositiveInfinityDefault(self):
|
||||
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(120))
|
||||
if o != 0:
|
||||
return self._tab.Get(flatbuffers.number_types.Float32Flags, o + self._tab.Pos)
|
||||
return float('inf')
|
||||
|
||||
# Monster
|
||||
def NegativeInfDefault(self):
|
||||
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(122))
|
||||
if o != 0:
|
||||
return self._tab.Get(flatbuffers.number_types.Float32Flags, o + self._tab.Pos)
|
||||
return float('-inf')
|
||||
|
||||
# Monster
|
||||
def NegativeInfinityDefault(self):
|
||||
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(124))
|
||||
if o != 0:
|
||||
return self._tab.Get(flatbuffers.number_types.Float32Flags, o + self._tab.Pos)
|
||||
return float('-inf')
|
||||
|
||||
# Monster
|
||||
def DoubleInfDefault(self):
|
||||
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(126))
|
||||
if o != 0:
|
||||
return self._tab.Get(flatbuffers.number_types.Float64Flags, o + self._tab.Pos)
|
||||
return float('inf')
|
||||
|
||||
def MonsterStart(builder): builder.StartObject(62)
|
||||
def MonsterAddPos(builder, pos): builder.PrependStructSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(pos), 0)
|
||||
def MonsterAddMana(builder, mana): builder.PrependInt16Slot(1, mana, 150)
|
||||
def MonsterAddHp(builder, hp): builder.PrependInt16Slot(2, hp, 100)
|
||||
@@ -1699,6 +1755,14 @@ def MonsterStartScalarKeySortedTablesVector(builder, numElems): return builder.S
|
||||
def MonsterAddNativeInline(builder, nativeInline): builder.PrependStructSlot(51, flatbuffers.number_types.UOffsetTFlags.py_type(nativeInline), 0)
|
||||
def MonsterAddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault): builder.PrependUint64Slot(52, longEnumNonEnumDefault, 0)
|
||||
def MonsterAddLongEnumNormalDefault(builder, longEnumNormalDefault): builder.PrependUint64Slot(53, longEnumNormalDefault, 2)
|
||||
def MonsterAddNanDefault(builder, nanDefault): builder.PrependFloat32Slot(54, nanDefault, float('nan'))
|
||||
def MonsterAddInfDefault(builder, infDefault): builder.PrependFloat32Slot(55, infDefault, float('inf'))
|
||||
def MonsterAddPositiveInfDefault(builder, positiveInfDefault): builder.PrependFloat32Slot(56, positiveInfDefault, float('inf'))
|
||||
def MonsterAddInfinityDefault(builder, infinityDefault): builder.PrependFloat32Slot(57, infinityDefault, float('inf'))
|
||||
def MonsterAddPositiveInfinityDefault(builder, positiveInfinityDefault): builder.PrependFloat32Slot(58, positiveInfinityDefault, float('inf'))
|
||||
def MonsterAddNegativeInfDefault(builder, negativeInfDefault): builder.PrependFloat32Slot(59, negativeInfDefault, float('-inf'))
|
||||
def MonsterAddNegativeInfinityDefault(builder, negativeInfinityDefault): builder.PrependFloat32Slot(60, negativeInfinityDefault, float('-inf'))
|
||||
def MonsterAddDoubleInfDefault(builder, doubleInfDefault): builder.PrependFloat64Slot(61, doubleInfDefault, float('inf'))
|
||||
def MonsterEnd(builder): return builder.EndObject()
|
||||
|
||||
try:
|
||||
@@ -1763,6 +1827,14 @@ class MonsterT(object):
|
||||
self.nativeInline = None # type: Optional[TestT]
|
||||
self.longEnumNonEnumDefault = 0 # type: int
|
||||
self.longEnumNormalDefault = 2 # type: int
|
||||
self.nanDefault = float('nan') # type: float
|
||||
self.infDefault = float('inf') # type: float
|
||||
self.positiveInfDefault = float('inf') # type: float
|
||||
self.infinityDefault = float('inf') # type: float
|
||||
self.positiveInfinityDefault = float('inf') # type: float
|
||||
self.negativeInfDefault = float('-inf') # type: float
|
||||
self.negativeInfinityDefault = float('-inf') # type: float
|
||||
self.doubleInfDefault = float('inf') # type: float
|
||||
|
||||
@classmethod
|
||||
def InitFromBuf(cls, buf, pos):
|
||||
@@ -1964,6 +2036,14 @@ class MonsterT(object):
|
||||
self.nativeInline = TestT.InitFromObj(monster.NativeInline())
|
||||
self.longEnumNonEnumDefault = monster.LongEnumNonEnumDefault()
|
||||
self.longEnumNormalDefault = monster.LongEnumNormalDefault()
|
||||
self.nanDefault = monster.NanDefault()
|
||||
self.infDefault = monster.InfDefault()
|
||||
self.positiveInfDefault = monster.PositiveInfDefault()
|
||||
self.infinityDefault = monster.InfinityDefault()
|
||||
self.positiveInfinityDefault = monster.PositiveInfinityDefault()
|
||||
self.negativeInfDefault = monster.NegativeInfDefault()
|
||||
self.negativeInfinityDefault = monster.NegativeInfinityDefault()
|
||||
self.doubleInfDefault = monster.DoubleInfDefault()
|
||||
|
||||
# MonsterT
|
||||
def Pack(self, builder):
|
||||
@@ -2217,6 +2297,14 @@ class MonsterT(object):
|
||||
MonsterAddNativeInline(builder, nativeInline)
|
||||
MonsterAddLongEnumNonEnumDefault(builder, self.longEnumNonEnumDefault)
|
||||
MonsterAddLongEnumNormalDefault(builder, self.longEnumNormalDefault)
|
||||
MonsterAddNanDefault(builder, self.nanDefault)
|
||||
MonsterAddInfDefault(builder, self.infDefault)
|
||||
MonsterAddPositiveInfDefault(builder, self.positiveInfDefault)
|
||||
MonsterAddInfinityDefault(builder, self.infinityDefault)
|
||||
MonsterAddPositiveInfinityDefault(builder, self.positiveInfinityDefault)
|
||||
MonsterAddNegativeInfDefault(builder, self.negativeInfDefault)
|
||||
MonsterAddNegativeInfinityDefault(builder, self.negativeInfinityDefault)
|
||||
MonsterAddDoubleInfDefault(builder, self.doubleInfDefault)
|
||||
monster = MonsterEnd(builder)
|
||||
return monster
|
||||
|
||||
|
||||
Reference in New Issue
Block a user