@@ -37,6 +37,22 @@ interface FunctionInterfaces {
3737 function manyParamsManyReturns(uint x1 , uint x2 , uint x3 , uint x4 , uint x5 , uint x6 , uint x7 , uint x8 , uint x9 , uint x10 ) returns(uint y1 , uint y2 , uint y3 , uint y4 , uint y5 , uint y6 , uint y7 , uint y8 , uint y9 , uint y10 );
3838
3939 function manyParamsManyModifiersManyReturns(uint x1 , uint x2 , uint x3 , uint x4 , uint x5 , uint x6 , uint x7 , uint x8 , uint x9 , uint x10 ) modifier1 modifier2 modifier3 modifier4 modifier5 modifier6 modifier7 modifier8 modifier9 modifier10 returns(uint y1 , uint y2 , uint y3 , uint y4 , uint y5 , uint y6 , uint y7 , uint y8 , uint y9 , uint y10 );
40+
41+ function modifierOrderCorrect01() public view virtual override modifier1 modifier2 returns(uint );
42+
43+ function modifierOrderCorrect02() private pure virtual modifier1 modifier2 returns(string );
44+
45+ function modifierOrderCorrect03() external payable override modifier1 modifier2 returns(address );
46+
47+ function modifierOrderCorrect04() internal virtual override modifier1 modifier2 returns(uint );
48+
49+ function modifierOrderIncorrect01() public modifier1 modifier2 override virtual view returns(uint );
50+
51+ function modifierOrderIncorrect02() virtual modifier1 external modifier2 override returns(uint );
52+
53+ function modifierOrderIncorrect03() modifier1 pure internal virtual modifier2 returns(uint );
54+
55+ function modifierOrderIncorrect04() override modifier1 payable external modifier2 returns(uint );
4056}
4157
4258contract FunctionDefinitions {
@@ -118,6 +134,38 @@ contract FunctionDefinitions {
118134 function manyParamsManyModifiersManyReturns(uint x1 , uint x2 , uint x3 , uint x4 , uint x5 , uint x6 , uint x7 , uint x8 , uint x9 , uint x10 ) modifier1 modifier2 modifier3 modifier4 modifier5 modifier6 modifier7 modifier8 modifier9 modifier10 returns(uint y1 , uint y2 , uint y3 , uint y4 , uint y5 , uint y6 , uint y7 , uint y8 , uint y9 , uint y10 ) {
119135 a = 1 ;
120136 }
137+
138+ function modifierOrderCorrect01() public view virtual override modifier1 modifier2 returns(uint ) {
139+ a = 1 ;
140+ }
141+
142+ function modifierOrderCorrect02() private pure virtual modifier1 modifier2 returns(string ) {
143+ a = 1 ;
144+ }
145+
146+ function modifierOrderCorrect03() external payable override modifier1 modifier2 returns(address ) {
147+ a = 1 ;
148+ }
149+
150+ function modifierOrderCorrect04() internal virtual override modifier1 modifier2 returns(uint ) {
151+ a = 1 ;
152+ }
153+
154+ function modifierOrderIncorrect01() public modifier1 modifier2 override virtual view returns(uint ) {
155+ a = 1 ;
156+ }
157+
158+ function modifierOrderIncorrect02() virtual modifier1 external modifier2 override returns(uint ) {
159+ a = 1 ;
160+ }
161+
162+ function modifierOrderIncorrect03() modifier1 pure internal virtual modifier2 returns(uint ) {
163+ a = 1 ;
164+ }
165+
166+ function modifierOrderIncorrect04() override modifier1 payable external modifier2 returns(uint ) {
167+ a = 1 ;
168+ }
121169}
122170~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
123171interface FunctionInterfaces {
@@ -356,6 +404,72 @@ interface FunctionInterfaces {
356404 uint256 y9 ,
357405 uint256 y10
358406 );
407+
408+ function modifierOrderCorrect01()
409+ public
410+ view
411+ virtual
412+ override
413+ modifier1
414+ modifier2
415+ returns (uint256 );
416+
417+ function modifierOrderCorrect02()
418+ private
419+ pure
420+ virtual
421+ modifier1
422+ modifier2
423+ returns (string );
424+
425+ function modifierOrderCorrect03()
426+ external
427+ payable
428+ override
429+ modifier1
430+ modifier2
431+ returns (address );
432+
433+ function modifierOrderCorrect04()
434+ internal
435+ virtual
436+ override
437+ modifier1
438+ modifier2
439+ returns (uint256 );
440+
441+ function modifierOrderIncorrect01()
442+ public
443+ view
444+ virtual
445+ override
446+ modifier1
447+ modifier2
448+ returns (uint256 );
449+
450+ function modifierOrderIncorrect02()
451+ external
452+ virtual
453+ override
454+ modifier1
455+ modifier2
456+ returns (uint256 );
457+
458+ function modifierOrderIncorrect03()
459+ internal
460+ pure
461+ virtual
462+ modifier1
463+ modifier2
464+ returns (uint256 );
465+
466+ function modifierOrderIncorrect04()
467+ external
468+ payable
469+ override
470+ modifier1
471+ modifier2
472+ returns (uint256 );
359473}
360474
361475contract FunctionDefinitions {
@@ -652,6 +766,96 @@ contract FunctionDefinitions {
652766 {
653767 a = 1 ;
654768 }
769+
770+ function modifierOrderCorrect01()
771+ public
772+ view
773+ virtual
774+ override
775+ modifier1
776+ modifier2
777+ returns (uint256 )
778+ {
779+ a = 1 ;
780+ }
781+
782+ function modifierOrderCorrect02()
783+ private
784+ pure
785+ virtual
786+ modifier1
787+ modifier2
788+ returns (string )
789+ {
790+ a = 1 ;
791+ }
792+
793+ function modifierOrderCorrect03()
794+ external
795+ payable
796+ override
797+ modifier1
798+ modifier2
799+ returns (address )
800+ {
801+ a = 1 ;
802+ }
803+
804+ function modifierOrderCorrect04()
805+ internal
806+ virtual
807+ override
808+ modifier1
809+ modifier2
810+ returns (uint256 )
811+ {
812+ a = 1 ;
813+ }
814+
815+ function modifierOrderIncorrect01()
816+ public
817+ view
818+ virtual
819+ override
820+ modifier1
821+ modifier2
822+ returns (uint256 )
823+ {
824+ a = 1 ;
825+ }
826+
827+ function modifierOrderIncorrect02()
828+ external
829+ virtual
830+ override
831+ modifier1
832+ modifier2
833+ returns (uint256 )
834+ {
835+ a = 1 ;
836+ }
837+
838+ function modifierOrderIncorrect03()
839+ internal
840+ pure
841+ virtual
842+ modifier1
843+ modifier2
844+ returns (uint256 )
845+ {
846+ a = 1 ;
847+ }
848+
849+ function modifierOrderIncorrect04()
850+ external
851+ payable
852+ override
853+ modifier1
854+ modifier2
855+ returns (uint256 )
856+ {
857+ a = 1 ;
858+ }
655859}
656860
657861` ;
0 commit comments