@@ -163,7 +163,7 @@ public boolean hasDescription() {
163
163
private @ NotNull Result <ApplicableNode , List <String >> checkApplicable (@ NotNull ArgumentReader reader , @ NotNull Set <CommandNode <?>> nodes ) {
164
164
List <CommandNode <?>> options = new ArrayList <>();
165
165
List <String > exceptions = new ArrayList <>();
166
- if (reader .index () != 0 ) reader .next ();
166
+ if (reader .index () != 0 && ! reader . atEnd () ) reader .next ();
167
167
int beforeIndex = reader .index ();
168
168
for (CommandNode <?> node : nodes ) {
169
169
node .parse (reader ).match (val -> options .add (node ), e -> {
@@ -185,10 +185,11 @@ public boolean hasDescription() {
185
185
Set <CommandNode <?>> nodeSet = nodes ;
186
186
List <String > args = new ArrayList <>();
187
187
List <CommandNode <?>> nodeList = new ArrayList <>();
188
- CommandNode <?> node = null ;
189
- while (!reader .atEnd ()) {
190
- if (nodeSet .isEmpty ()) return new BuilderCommand .CurrentNode (Result .error (Collections .emptyList ()), nodeList , args , true );
191
- Result <BuilderCommand .ApplicableNode , List <String >> parseResult = checkApplicable (reader , nodeSet );
188
+ CommandNode <?> node ;
189
+ do {
190
+ if (nodeSet .isEmpty ())
191
+ return new CurrentNode (Result .error (Collections .emptyList ()), nodeList , args , true );
192
+ Result <ApplicableNode , List <String >> parseResult = checkApplicable (reader , nodeSet );
192
193
if (parseResult .isError ()) {
193
194
System .out .println ("errors: " + String .join ("," , parseResult .unwrapError ()));
194
195
System .out .println ("args is " + String .join ("," , args ));
@@ -202,8 +203,7 @@ public boolean hasDescription() {
202
203
args .add (applicableNode .argument );
203
204
204
205
if (reader .atEnd () && reader .get () == ' ' ) args .add ("" );
205
- }
206
- if (node == null ) throw new IllegalArgumentException ("reader must not be at end" );
206
+ } while (!reader .atEnd ());
207
207
System .out .println ("args is " + String .join ("," , args ));
208
208
return new CurrentNode (Result .ok (node ), nodeList , args , false );
209
209
}
0 commit comments