Skip to content
This repository has been archived by the owner on Apr 3, 2018. It is now read-only.

Commit

Permalink
Fixed #101: Assertion failure parsing invalid syntax: auto x = n. .n;
Browse files Browse the repository at this point in the history
  • Loading branch information
bruno-medeiros committed Mar 16, 2015
1 parent b9869bb commit f5e27d5
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 2 deletions.
3 changes: 2 additions & 1 deletion documentation/ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
## DDT release ChangeLog

### DDT 0.11.1
* Fixed: AssertionFailedException, or incorrect results invoking Content Assist on unsaved editor files. (Fixes #99, #97)
* Fixed: Either Assertion failure or incorrect results when invoking Content Assist on unsaved editor files. (Fixes #99, #97)
* Fixed #101: Assertion failure parsing invalid syntax: `auto x = n. .n;`

### DDT 0.11.0
##### Parser:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ public void runAnnotatedSourceTest(AnnotatedSource testSource) {

} else if(mde.name.equals("parser") && areEqual(mde.value, "IgnoreRest")){
int pos = assertNoLength(mde).offset;

if(expectedRemainingSource == null) {
expectedParsedSource = fullSource.substring(0, pos);
expectedRemainingSource = fullSource.substring(pos);
Expand Down
8 changes: 7 additions & 1 deletion plugin_tooling/src/dtool/parser/DeeParser_RefOrExp.java
Original file line number Diff line number Diff line change
Expand Up @@ -713,7 +713,13 @@ protected Expression parsePostfixExpression(Expression exp) {
if(qualifier instanceof ExpReference) {
ExpReference expReference = (ExpReference) qualifier;
if(expReference.ref instanceof RefQualified) {
assertTrue(((RefQualified) expReference.ref).isExpressionQualifier);
RefQualified refQualified = (RefQualified) expReference.ref;
if(refQualified.qualifiedId.isMissing()) {
// Special case, if refQualified.qualifiedId was missing,
// the we don't try to continue parsing the expression.
return qualifier;
}
assertTrue(refQualified.isExpressionQualifier);
} else if(expReference.ref instanceof RefTemplateInstance) {
} else {
assertFail(); // ...otherwise refqualified would have been parsed already
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ DefVariable(RefQualified(RefQualified(RefIdentifier RefIdentifier) RefIdentifier
▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂
#PARSE(REFERENCE) foo. #@NO_ID #@BREAK int
#STRUCTURE_EXPECTED: RefQualified(RefIdentifier #@NO_ID)
▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂ bug #101 similar:
#PARSE(REFERENCE) foo. #@NO_ID #@BREAK .n
#STRUCTURE_EXPECTED: RefQualified(RefIdentifier #@NO_ID)

▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂
#PARSE(REFERENCE) #@TYPE_REFS__NO_BROKEN__INVALID_QUALIFIER #@IGNORE_REST .foo
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@
▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂
#PARSE(EXPRESSION_ToE) #@QUALIFIER . #@NO_ID /* error doesnt break parsing */ () + 23
#STRUCTURE_EXPECTED: ExpInfix( ExpCall( ExpReference(RefQualified(#@QUALIFIER #@NO_ID)) ) Integer)
▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂ bug #101 :
#PARSE(EXPRESSION_ToE) foo. #@NO_ID /* error doesnt break parsing */ #@IGNORE_REST .id
#STRUCTURE_EXPECTED: ExpReference(RefQualified(RefIdentifier #@NO_ID))

▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂
#PARSE(EXPRESSION_ToE) . #@NO_ID /* error doesnt break parsing */ + 23
#STRUCTURE_EXPECTED: ExpInfix( ExpReference(RefModuleQualified(#@NO_ID)) Integer )
Expand Down

0 comments on commit f5e27d5

Please sign in to comment.