Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9ffc38f

Browse files
committed
Fix deterministic ordering of class members in PrintAst
1 parent a6fd7a3 commit 9ffc38f

2 files changed

Lines changed: 37 additions & 36 deletions

File tree

csharp/ql/src/semmle/code/csharp/PrintAst.qll

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -571,11 +571,12 @@ final class TypeNode extends ElementNode {
571571
result.(BaseTypesNode).getValueOrRefType() = type
572572
or
573573
result.(ElementNode).getElement() =
574-
rank[childIndex - 3](Member m, string file, int line, int column |
574+
rank[childIndex - 3](Member m, string file, int line, int column, string name |
575575
m = type.getAMember() and
576+
name = m.getName() and
576577
locationSortKeys(m, file, line, column)
577578
|
578-
m order by file, line, column
579+
m order by file, line, column, name
579580
)
580581
}
581582
}

csharp/ql/test/library-tests/csharp9/PrintAst.expected

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -659,16 +659,16 @@ ParenthesizedPattern.cs:
659659
# 27| 2: [IntLiteral] 5
660660
Record.cs:
661661
# 4| [Class] Person
662-
# 4| 11: [Property] EqualityContract
663-
# 4| 3: [Getter] get_EqualityContract
664662
# 4| 11: [NEOperator] !=
665663
#-----| 2: (Parameters)
666664
# 4| 0: [Parameter] r1
667665
# 4| 1: [Parameter] r2
668-
# 4| 11: [EQOperator] ==
666+
# 4| 12: [EQOperator] ==
669667
#-----| 2: (Parameters)
670668
# 4| 0: [Parameter] r1
671669
# 4| 1: [Parameter] r2
670+
# 4| 13: [Property] EqualityContract
671+
# 4| 3: [Getter] get_EqualityContract
672672
# 6| 14: [IndexerProperty] LastName
673673
# 6| -1: [TypeMention] string
674674
# 6| 3: [Getter] get_LastName
@@ -689,16 +689,16 @@ Record.cs:
689689
# 9| 0: [ParameterAccess] access to parameter first
690690
# 9| 1: [ParameterAccess] access to parameter last
691691
# 12| [Class] Teacher
692-
# 12| 12: [Property] EqualityContract
693-
# 12| 3: [Getter] get_EqualityContract
694692
# 12| 12: [NEOperator] !=
695693
#-----| 2: (Parameters)
696694
# 12| 0: [Parameter] r1
697695
# 12| 1: [Parameter] r2
698-
# 12| 12: [EQOperator] ==
696+
# 12| 13: [EQOperator] ==
699697
#-----| 2: (Parameters)
700698
# 12| 0: [Parameter] r1
701699
# 12| 1: [Parameter] r2
700+
# 12| 14: [Property] EqualityContract
701+
# 12| 3: [Getter] get_EqualityContract
702702
# 14| 15: [IndexerProperty] Subject
703703
# 14| -1: [TypeMention] string
704704
# 14| 3: [Getter] get_Subject
@@ -717,16 +717,16 @@ Record.cs:
717717
# 17| 0: [PropertyCall] access to property Subject
718718
# 17| 1: [ParameterAccess] access to parameter sub
719719
# 20| [Class] Student
720-
# 20| 12: [Property] EqualityContract
721-
# 20| 3: [Getter] get_EqualityContract
722720
# 20| 12: [NEOperator] !=
723721
#-----| 2: (Parameters)
724722
# 20| 0: [Parameter] r1
725723
# 20| 1: [Parameter] r2
726-
# 20| 12: [EQOperator] ==
724+
# 20| 13: [EQOperator] ==
727725
#-----| 2: (Parameters)
728726
# 20| 0: [Parameter] r1
729727
# 20| 1: [Parameter] r2
728+
# 20| 14: [Property] EqualityContract
729+
# 20| 3: [Getter] get_EqualityContract
730730
# 22| 15: [Property] Level
731731
# 22| -1: [TypeMention] int
732732
# 22| 3: [Getter] get_Level
@@ -745,22 +745,22 @@ Record.cs:
745745
# 24| 0: [PropertyCall] access to property Level
746746
# 24| 1: [ParameterAccess] access to parameter level
747747
# 27| [Class] Person1
748-
# 27| 12: [Property] EqualityContract
749-
# 27| 3: [Getter] get_EqualityContract
750-
# 27| 12: [InstanceConstructor] Person1
751-
#-----| 2: (Parameters)
752-
# 27| 0: [Parameter] FirstName
753-
# 27| -1: [TypeMention] string
754-
# 27| 1: [Parameter] LastName
755-
# 27| -1: [TypeMention] string
756748
# 27| 12: [NEOperator] !=
757749
#-----| 2: (Parameters)
758750
# 27| 0: [Parameter] r1
759751
# 27| 1: [Parameter] r2
760-
# 27| 12: [EQOperator] ==
752+
# 27| 13: [EQOperator] ==
761753
#-----| 2: (Parameters)
762754
# 27| 0: [Parameter] r1
763755
# 27| 1: [Parameter] r2
756+
# 27| 14: [Property] EqualityContract
757+
# 27| 3: [Getter] get_EqualityContract
758+
# 27| 15: [InstanceConstructor] Person1
759+
#-----| 2: (Parameters)
760+
# 27| 0: [Parameter] FirstName
761+
# 27| -1: [TypeMention] string
762+
# 27| 1: [Parameter] LastName
763+
# 27| -1: [TypeMention] string
764764
# 27| 16: [IndexerProperty] FirstName
765765
# 27| 3: [Getter] get_FirstName
766766
# 27| 4: [Setter] set_FirstName
@@ -772,17 +772,17 @@ Record.cs:
772772
#-----| 2: (Parameters)
773773
# 27| 0: [Parameter] value
774774
# 29| [Class] Teacher1
775-
# 29| 13: [Property] EqualityContract
776-
# 29| 3: [Getter] get_EqualityContract
777775
# 29| 13: [NEOperator] !=
778776
#-----| 2: (Parameters)
779777
# 29| 0: [Parameter] r1
780778
# 29| 1: [Parameter] r2
781-
# 29| 13: [EQOperator] ==
779+
# 29| 14: [EQOperator] ==
782780
#-----| 2: (Parameters)
783781
# 29| 0: [Parameter] r1
784782
# 29| 1: [Parameter] r2
785-
# 29| 13: [InstanceConstructor] Teacher1
783+
# 29| 15: [Property] EqualityContract
784+
# 29| 3: [Getter] get_EqualityContract
785+
# 29| 16: [InstanceConstructor] Teacher1
786786
#-----| 2: (Parameters)
787787
# 29| 0: [Parameter] FirstName
788788
# 29| -1: [TypeMention] string
@@ -796,17 +796,17 @@ Record.cs:
796796
#-----| 2: (Parameters)
797797
# 29| 0: [Parameter] value
798798
# 32| [Class] Student1
799-
# 32| 13: [Property] EqualityContract
800-
# 32| 3: [Getter] get_EqualityContract
801799
# 32| 13: [NEOperator] !=
802800
#-----| 2: (Parameters)
803801
# 32| 0: [Parameter] r1
804802
# 32| 1: [Parameter] r2
805-
# 32| 13: [EQOperator] ==
803+
# 32| 14: [EQOperator] ==
806804
#-----| 2: (Parameters)
807805
# 32| 0: [Parameter] r1
808806
# 32| 1: [Parameter] r2
809-
# 32| 13: [InstanceConstructor] Student1
807+
# 32| 15: [Property] EqualityContract
808+
# 32| 3: [Getter] get_EqualityContract
809+
# 32| 16: [InstanceConstructor] Student1
810810
#-----| 2: (Parameters)
811811
# 32| 0: [Parameter] FirstName
812812
# 32| -1: [TypeMention] string
@@ -820,17 +820,17 @@ Record.cs:
820820
#-----| 2: (Parameters)
821821
# 32| 0: [Parameter] value
822822
# 35| [Class] Pet
823-
# 35| 12: [Property] EqualityContract
824-
# 35| 3: [Getter] get_EqualityContract
825823
# 35| 12: [NEOperator] !=
826824
#-----| 2: (Parameters)
827825
# 35| 0: [Parameter] r1
828826
# 35| 1: [Parameter] r2
829-
# 35| 12: [EQOperator] ==
827+
# 35| 13: [EQOperator] ==
830828
#-----| 2: (Parameters)
831829
# 35| 0: [Parameter] r1
832830
# 35| 1: [Parameter] r2
833-
# 35| 12: [InstanceConstructor] Pet
831+
# 35| 14: [Property] EqualityContract
832+
# 35| 3: [Getter] get_EqualityContract
833+
# 35| 15: [InstanceConstructor] Pet
834834
#-----| 2: (Parameters)
835835
# 35| 0: [Parameter] Name
836836
# 35| -1: [TypeMention] string
@@ -846,20 +846,20 @@ Record.cs:
846846
# 38| 0: [TypeMention] Console
847847
# 38| 0: [StringLiteral] "Shredding furniture"
848848
# 41| [Class] Dog
849-
# 41| 12: [Property] EqualityContract
850-
# 41| 3: [Getter] get_EqualityContract
851849
# 41| 12: [NEOperator] !=
852850
#-----| 2: (Parameters)
853851
# 41| 0: [Parameter] r1
854852
# 41| 1: [Parameter] r2
855-
# 41| 12: [EQOperator] ==
853+
# 41| 13: [EQOperator] ==
856854
#-----| 2: (Parameters)
857855
# 41| 0: [Parameter] r1
858856
# 41| 1: [Parameter] r2
859-
# 41| 12: [InstanceConstructor] Dog
857+
# 41| 14: [InstanceConstructor] Dog
860858
#-----| 2: (Parameters)
861859
# 41| 0: [Parameter] Name
862860
# 41| -1: [TypeMention] string
861+
# 41| 15: [Property] EqualityContract
862+
# 41| 3: [Getter] get_EqualityContract
863863
# 43| 16: [Method] WagTail
864864
# 43| -1: [TypeMention] Void
865865
# 44| 4: [MethodCall] call to method WriteLine

0 commit comments

Comments
 (0)