Skip to content

Commit

Permalink
Merge pull request #25 from ortus-solutions-private/comment-issue
Browse files Browse the repository at this point in the history
Fixes the error of Javadoc comments in code
  • Loading branch information
bdw429s authored Jan 4, 2024
2 parents 152ba52 + ff364ae commit eed423c
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/main/java/ortus/boxlang/parser/BoxAbstractParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ protected void addErrorListeners( Lexer lexer, Parser parser ) {
lexer.addErrorListener( errorListener );
parser.removeErrorListeners();
parser.addErrorListener( errorListener );
parser.setErrorHandler( new ParserErrorStrategy() );
}

/**
Expand Down
7 changes: 5 additions & 2 deletions src/main/java/ortus/boxlang/parser/BoxCFParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,7 @@ protected ParserRuleContext parserFirstStage( InputStream stream ) throws IOExce
CFParser parser = new CFParser( new CommonTokenStream( lexer ) );
addErrorListeners( lexer, parser );
ParserRuleContext parseTree = parser.script();

if ( lexer.hasUnpoppedModes() ) {
List<String> modes = lexer.getUnpoppedModes();

Expand Down Expand Up @@ -1534,8 +1535,10 @@ private List<BoxDocumentationAnnotation> toAst( File file, CFParser.JavadocConte
BoxDOCParser parser = new BoxDOCParser();
ParsingResult result = parser.parse( null, node.getText() );
BoxDocumentation docs = ( BoxDocumentation ) result.getRoot();
for ( BoxNode n : docs.getAnnotations() ) {
documentation.add( ( BoxDocumentationAnnotation ) n );
if ( docs != null ) {
for ( BoxNode n : docs.getAnnotations() ) {
documentation.add( ( BoxDocumentationAnnotation ) n );
}
}
} catch ( IOException e ) {
throw new RuntimeException( e );
Expand Down
24 changes: 24 additions & 0 deletions src/main/java/ortus/boxlang/parser/ParserErrorStrategy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package ortus.boxlang.parser;

import org.antlr.v4.runtime.DefaultErrorStrategy;
import org.antlr.v4.runtime.Parser;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.misc.IntervalSet;
import ortus.boxlang.parser.antlr.CFLexer;

/**
* Recover form errors having Javadoc in body
*/
public class ParserErrorStrategy extends DefaultErrorStrategy {

@Override
protected void reportUnwantedToken( Parser recognizer ) {
if ( inErrorRecoveryMode( recognizer ) ) {
return;
}
Token t = recognizer.getCurrentToken();
if ( t.getType() != CFLexer.JAVADOC_COMMENT ) {
super.reportUnwantedToken( recognizer );
}
}
}
28 changes: 28 additions & 0 deletions src/test/java/ortus/boxlang/compiler/TestRecover.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package ortus.boxlang.compiler;

import org.junit.jupiter.api.Test;
import ortus.boxlang.parser.BoxCFParser;
import ortus.boxlang.parser.ParsingResult;

import java.io.IOException;

import static org.junit.jupiter.api.Assertions.assertTrue;

public class TestRecover {

@Test
public void testRecover() throws IOException {
String code = """
/**
*/
function f() {
/**
*/
}
""";

BoxCFParser parser = new BoxCFParser();
ParsingResult result = parser.parse( code );
assertTrue( result.isCorrect() );
}
}

0 comments on commit eed423c

Please sign in to comment.