Skip to content

Commit

Permalink
fix ParserImpl reuse bug
Browse files Browse the repository at this point in the history
  • Loading branch information
nilswende committed Feb 23, 2024
1 parent 71f24eb commit 0d4fde3
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 2 deletions.
3 changes: 2 additions & 1 deletion src/main/java/com/wn/dbml/compiler/parser/ParserImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,13 @@
* The default parser implementation.
*/
public class ParserImpl implements Parser {
private final List<RelationshipDefinition> relationshipDefinitions = new ArrayList<>();
private List<RelationshipDefinition> relationshipDefinitions;
private TokenAccess tokenAccess;
private Database database;

@Override
public Database parse(final Lexer lexer) {
relationshipDefinitions = new ArrayList<>();
tokenAccess = new TokenAccess(lexer);
database = new Database();
loop:
Expand Down
27 changes: 26 additions & 1 deletion src/test/java/com/wn/dbml/compiler/ParserTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,32 @@ private Database parse(final String dbml) {
private Schema getDefaultSchema(final Database database) {
return database.getSchema(Schema.DEFAULT_NAME);
}


@Test
void testParseTwice() {
var dbml = """
Table schema1.table1 {
id integer
column1 integer
}
Table schema2.table2 {
id integer
column2 integer
}
Ref r1: schema2.table2.column2 - schema1.table1.column1""";
var parser = new ParserImpl();

var database = parser.parse(new LexerImpl(dbml));
var relationships = database.getRelationships();
assertEquals(1, relationships.size());

database = parser.parse(new LexerImpl(dbml));
relationships = database.getRelationships();
assertEquals(1, relationships.size());
}

@Test
void testParseProject() {
var dbml = """
Expand Down

0 comments on commit 0d4fde3

Please sign in to comment.