Governance.getProposalStage(id) should return Expired for dequeued proposals that return 'True' for: isDequeuedProposalExpired(id).
Current Behavior
For dequeued proposals, getProposalStage(id) just returns stage based on current time in the stages. So it will be incorrect for proposals that may not get approved or that may not pass.
While this doesn't seem to cause issues in Governance contract itself (since everything critical is manually checking isDequeuedProposalExpired), it causes unintentional mistakes in ContractKit, and it is also a potential time bomb waiting for someone to make a bigger mistake assuming getProposalStage returns correct data.
Expected Behavior
Governance.getProposalStage(id) should return
Expired
for dequeued proposals that return 'True' for: isDequeuedProposalExpired(id).Current Behavior
For dequeued proposals, getProposalStage(id) just returns stage based on current time in the stages. So it will be incorrect for proposals that may not get approved or that may not pass.
While this doesn't seem to cause issues in Governance contract itself (since everything critical is manually checking isDequeuedProposalExpired), it causes unintentional mistakes in ContractKit, and it is also a potential time bomb waiting for someone to make a bigger mistake assuming getProposalStage returns correct data.