Merge branch 'format-work' of https://github.com/callumenator/Dscanner into callumenator-format-work

Conflicts:
	formatter.d
This commit is contained in:
Hackerpilot 2014-06-11 13:32:24 -07:00
commit f4525cad93
3 changed files with 3869 additions and 761 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1182,6 +1182,8 @@ public:
} }
/** */ Token name; /** */ Token name;
/** */ Initializer initializer; /** */ Initializer initializer;
/** */ TypeSuffix[] cstyle;
mixin OpEquals; mixin OpEquals;
} }
@ -2164,6 +2166,8 @@ public:
/** */ Token name; /** */ Token name;
/** */ bool vararg; /** */ bool vararg;
/** */ AssignExpression default_; /** */ AssignExpression default_;
/** */ TypeSuffix[] cstyle;
mixin OpEquals; mixin OpEquals;
} }

View File

@ -1908,10 +1908,19 @@ class ClassFive(A, B) : Super if (someTest()) {}}c;
auto id = expect(tok!"identifier"); auto id = expect(tok!"identifier");
if (id is null) return null; if (id is null) return null;
node.name = *id; node.name = *id;
if (currentIsOneOf(tok!"[", tok!"*")) if (currentIs(tok!"[")) // dmd doesn't accept pointer after identifier
{ {
error("C-style variable declarations are not supported."); warn("C-style array declaration.");
return null; TypeSuffix[] typeSuffixes;
while (moreTokens() && currentIs(tok!"["))
{
auto suffix = parseTypeSuffix();
if (suffix !is null)
typeSuffixes ~= suffix;
else
return null;
}
node.cstyle = ownArray(typeSuffixes);
} }
if (currentIs(tok!"=")) if (currentIs(tok!"="))
{ {
@ -3937,7 +3946,7 @@ invariant() foo();
* Parses a Parameter * Parses a Parameter
* *
* $(GRAMMAR $(RULEDEF parameter): * $(GRAMMAR $(RULEDEF parameter):
* $(RULE parameterAttribute)* $(RULE type) ($(LITERAL Identifier)? $(LITERAL '...') | ($(LITERAL Identifier)? ($(LITERAL '=') $(RULE assignExpression))?))? * $(RULE parameterAttribute)* $(RULE type) (($(LITERAL Identifier) $(RULE typeSuffix)*)? $(LITERAL '...') | ($(LITERAL Identifier)? ($(LITERAL '=') $(RULE assignExpression))?))?
* ;) * ;)
*/ */
Parameter parseParameter() Parameter parseParameter()
@ -3969,6 +3978,19 @@ invariant() foo();
advance(); advance();
node.default_ = parseAssignExpression(); node.default_ = parseAssignExpression();
} }
else if (currentIs(tok!"["))
{
TypeSuffix[] typeSuffixes;
while(moreTokens() && currentIs(tok!"["))
{
auto suffix = parseTypeSuffix();
if (suffix !is null)
typeSuffixes ~= suffix;
else
return null;
}
node.cstyle = ownArray(typeSuffixes);
}
} }
else if (currentIs(tok!"...")) else if (currentIs(tok!"..."))
{ {