@@ -421,7 +421,9 @@ public JavaStubGrammar ()
421421 var packageTokens = s . Split ( '.' ) . TakeWhile ( t => ! t . Any ( c => Char . IsUpper ( c ) ) ) ;
422422 return s . Substring ( Enumerable . Sum ( packageTokens . Select ( t => t . Length ) ) + packageTokens . Count ( ) ) ;
423423 } ;
424- method . Exceptions = ( ( IEnumerable < string > ) node . ChildNodes [ ctor ? 6 : 7 ] . AstNode ) ? . Select ( s => new JavaException { Type = s , Name = stripPackage ( s ) } ) ? . ToArray ( ) ;
424+ method . Exceptions = ( ( IEnumerable < string > ) node . ChildNodes [ ctor ? 6 : 7 ] . AstNode )
425+ ? . Select ( s => new JavaException { Type = s , Name = stripPackage ( s ) } )
426+ ? . ToArray ( ) ;
425427 method . Deprecated = ( ( IEnumerable < string > ) node . ChildNodes [ 0 ] . AstNode ) . Any ( v => v == "java.lang.Deprecated" || v == "Deprecated" ) ? "deprecated" : "not deprecated" ;
426428 method . Final = mods . Contains ( "final" ) ;
427429 method . TypeParameters = modsOrTps . OfType < JavaTypeParameters > ( ) . FirstOrDefault ( ) ;
@@ -501,7 +503,7 @@ public JavaStubGrammar ()
501503 assignment . AstConfig . NodeCreator = SelectChildValueAt ( 0 ) ;
502504 assign_expr . AstConfig . NodeCreator = ( ctx , node ) => {
503505 ProcessChildren ( ctx , node ) ;
504- node . AstNode = new KeyValuePair < string , string > ( ( string ) node . ChildNodes [ 0 ] . AstNode , node . ChildNodes [ 2 ] . AstNode ? . ToString ( ) ) ;
506+ node . AstNode = new KeyValuePair < string , string ? > ( ( string ) node . ChildNodes [ 0 ] . AstNode , node . ChildNodes [ 2 ] . AstNode ? . ToString ( ) ) ;
505507 } ;
506508 rvalue_expressions . AstConfig . NodeCreator = CreateArrayCreator < object > ( ) ;
507509 rvalue_expression . AstConfig . NodeCreator = SelectSingleChild ;
@@ -542,7 +544,7 @@ public JavaStubGrammar ()
542544 } ;
543545 generic_definition_arguments . AstConfig . NodeCreator = ( ctx , node ) => {
544546 ProcessChildren ( ctx , node ) ;
545- node . AstNode = new JavaTypeParameters ( ( JavaMethod ) null ) { TypeParameters = node . ChildNodes . Select ( c => c . AstNode ) . Cast < JavaTypeParameter > ( ) . ToList ( ) } ;
547+ node . AstNode = new JavaTypeParameters ( ( JavaMethod ? ) null ) { TypeParameters = node . ChildNodes . Select ( c => c . AstNode ) . Cast < JavaTypeParameter > ( ) . ToList ( ) } ;
546548 } ;
547549 generic_definition_argument . AstConfig . NodeCreator = ( ctx , node ) => {
548550 ProcessChildren ( ctx , node ) ;
@@ -557,7 +559,7 @@ public JavaStubGrammar ()
557559 generic_instance_identifier_or_q . AstConfig . NodeCreator = SelectSingleChild ;
558560 generic_instance_constraints . AstConfig . NodeCreator = ( ctx , node ) => {
559561 ProcessChildren ( ctx , node ) ;
560- var c = ( JavaGenericConstraints ) node . ChildNodes . FirstOrDefault ( ) ? . AstNode ;
562+ var c = ( JavaGenericConstraints ? ) node . ChildNodes . FirstOrDefault ( ) ? . AstNode ;
561563 if ( c != null )
562564 node . AstNode = " " + c . BoundsType + " " + string . Join ( " & " , c . GenericConstraints . Select ( cc => cc . Type ) ) ;
563565 } ;
@@ -602,27 +604,27 @@ public JavaStubParser ()
602604
603605 }
604606
605- public JavaPackage TryLoad ( string uri )
607+ public JavaPackage ? TryLoad ( string uri )
606608 {
607609 return TryLoad ( uri , out var _ ) ;
608610 }
609611
610- public JavaPackage TryLoad ( string uri , out ParseTree parseTree )
612+ public JavaPackage ? TryLoad ( string uri , out ParseTree parseTree )
611613 {
612614 return TryParse ( File . ReadAllText ( uri ) , uri , out parseTree ) ;
613615 }
614616
615- public JavaPackage TryParse ( string text )
617+ public JavaPackage ? TryParse ( string text )
616618 {
617619 return TryParse ( text , null , out var _ ) ;
618620 }
619621
620- public JavaPackage TryParse ( string text , out ParseTree parseTree )
622+ public JavaPackage ? TryParse ( string text , out ParseTree parseTree )
621623 {
622624 return TryParse ( text , null , out parseTree ) ;
623625 }
624626
625- public JavaPackage TryParse ( string text , string fileName , out ParseTree parseTree )
627+ public JavaPackage ? TryParse ( string text , string ? fileName , out ParseTree parseTree )
626628 {
627629 parseTree = base . Parse ( text , fileName ) ;
628630 if ( parseTree . HasErrors ( ) )
@@ -634,32 +636,35 @@ public JavaPackage TryParse (string text, string fileName, out ParseTree parseTr
634636
635637 void FlattenNestedTypes ( JavaPackage package )
636638 {
637- Action < List < JavaType > , JavaType > flatten = null ;
638- flatten = ( list , t ) => {
639+ var results = new List < JavaType > ( ) ;
640+ foreach ( var t in package . Types )
641+ Flatten ( results , t ) ;
642+ package . Types = results . ToList ( ) ;
643+
644+ void Flatten ( List < JavaType > list , JavaType t )
645+ {
639646 list . Add ( t ) ;
640647 foreach ( var nt in t . Members . OfType < JavaNestedType > ( ) ) {
648+ if ( nt . Type == null )
649+ continue ;
641650 nt . Type . Name = t . Name + '.' + nt . Type . Name ;
642651 foreach ( var nc in nt . Type . Members . OfType < JavaConstructor > ( ) )
643652 nc . Name = nt . Type . Name ;
644- flatten ( list , nt . Type ) ;
653+ Flatten ( list , nt . Type ) ;
645654 }
646655 t . Members = t . Members . Where ( _ => ! ( _ is JavaNestedType ) ) . ToArray ( ) ;
647- } ;
648- var results = new List < JavaType > ( ) ;
649- foreach ( var t in package . Types )
650- flatten ( results , t ) ;
651- package . Types = results . ToList ( ) ;
656+ }
652657 }
653658 }
654659
655660 class JavaNestedType : JavaMember
656661 {
657- public JavaNestedType ( JavaType type )
662+ public JavaNestedType ( JavaType ? type )
658663 : base ( type )
659664 {
660665 }
661666
662- public JavaType Type { get ; set ; }
667+ public JavaType ? Type { get ; set ; }
663668 }
664669}
665670
0 commit comments