@@ -921,7 +921,7 @@ public DocumentData(XDocument document)
921921 continue ;
922922 }
923923
924- if ( ! operationKinds . TryGetValue ( node . Attribute ( "Name" ) . Value , out var kinds ) )
924+ if ( ! operationKinds . TryGetValue ( node . RequiredAttribute ( "Name" ) . Value , out var kinds ) )
925925 {
926926 kinds = ImmutableArray < ( string name , int value , string ? extraDescription ) > . Empty ;
927927 }
@@ -937,7 +937,7 @@ public DocumentData(XDocument document)
937937 continue ;
938938 }
939939
940- if ( ! operationKinds . TryGetValue ( node . Attribute ( "Name" ) . Value , out var kinds ) )
940+ if ( ! operationKinds . TryGetValue ( node . RequiredAttribute ( "Name" ) . Value , out var kinds ) )
941941 {
942942 kinds = ImmutableArray < ( string name , int value , string ? extraDescription ) > . Empty ;
943943 }
@@ -987,11 +987,11 @@ public DocumentData(XDocument document)
987987 continue ;
988988 }
989989
990- int parsedValue = ParsePrefixHexValue ( entry . Attribute ( "Value" ) . Value ) ;
991- nodeBuilder . Add ( ( entry . Attribute ( "Name" ) . Value , parsedValue , entry . Attribute ( "ExtraDescription" ) ? . Value ) ) ;
990+ int parsedValue = ParsePrefixHexValue ( entry . RequiredAttribute ( "Value" ) . Value ) ;
991+ nodeBuilder . Add ( ( entry . RequiredAttribute ( "Name" ) . Value , parsedValue , entry . Attribute ( "ExtraDescription" ) ? . Value ) ) ;
992992 }
993993
994- builder . Add ( node . Attribute ( "Name" ) . Value , nodeBuilder . ToImmutable ( ) ) ;
994+ builder . Add ( node . RequiredAttribute ( "Name" ) . Value , nodeBuilder . ToImmutable ( ) ) ;
995995 continue ;
996996 }
997997 }
@@ -1008,7 +1008,7 @@ public DocumentData(XDocument document)
10081008 operationKind ++ ;
10091009 }
10101010
1011- var nodeName = node . Attribute ( "Name" ) . Value ;
1011+ var nodeName = node . RequiredAttribute ( "Name" ) . Value ;
10121012 var kindName = nodeName . Substring ( "I" . Length , nodeName . Length - "I" . Length - "Operation" . Length ) ;
10131013 builder . Add ( nodeName , ImmutableArray . Create ( ( kindName , operationKind , ( string ? ) null ) ) ) ;
10141014 }
@@ -1021,12 +1021,12 @@ private static ImmutableHashSet<int> GetSkippedOperationKinds(XDocument document
10211021 var builder = ImmutableHashSet . CreateBuilder < int > ( ) ;
10221022 foreach ( var skippedKind in document . XPathSelectElements ( "/Tree/UnusedOperationKinds/Entry" ) )
10231023 {
1024- builder . Add ( ParsePrefixHexValue ( skippedKind . Attribute ( "Value" ) . Value ) ) ;
1024+ builder . Add ( ParsePrefixHexValue ( skippedKind . RequiredAttribute ( "Value" ) . Value ) ) ;
10251025 }
10261026
10271027 foreach ( var explicitKind in document . XPathSelectElements ( "/Tree/*/OperationKind/Entry" ) )
10281028 {
1029- builder . Add ( ParsePrefixHexValue ( explicitKind . Attribute ( "Value" ) . Value ) ) ;
1029+ builder . Add ( ParsePrefixHexValue ( explicitKind . RequiredAttribute ( "Value" ) . Value ) ) ;
10301030 }
10311031
10321032 return builder . ToImmutable ( ) ;
@@ -1052,7 +1052,7 @@ public InterfaceData(DocumentData documentData, XElement node, ImmutableArray<(s
10521052 this . documentData = documentData ;
10531053
10541054 this . OperationKinds = operationKinds ;
1055- this . InterfaceName = node . Attribute ( "Name" ) . Value ;
1055+ this . InterfaceName = node . RequiredAttribute ( "Name" ) . Value ;
10561056
10571057 if ( node . Attribute ( "Namespace" ) is { } namespaceNode )
10581058 {
@@ -1127,9 +1127,9 @@ private sealed class PropertyData
11271127 {
11281128 public PropertyData ( XElement node )
11291129 {
1130- this . Name = node . Attribute ( "Name" ) . Value ;
1130+ this . Name = node . RequiredAttribute ( "Name" ) . Value ;
11311131 this . AccessorName = this . Name + "Accessor" ;
1132- this . Type = node . Attribute ( "Type" ) . Value ;
1132+ this . Type = node . RequiredAttribute ( "Type" ) . Value ;
11331133
11341134 this . IsNew = node . Attribute ( "New" ) ? . Value == "true" ;
11351135 this . IsPublicProperty = node . Attribute ( "Internal" ) ? . Value != "true" ;
0 commit comments