Move function parsing code to ParseContext
This change is pure refactoring. It will make it easier to fix bugs
related to function declarations.
BUG=angleproject:911
BUG=angleproject:1067
BUG=angleproject:1068
TEST=angle_unittests
Change-Id: I031783dc02612d9cf3ff7a9c8291cf8ab33577aa
Reviewed-on: https://chromium-review.googlesource.com/320081
Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
diff --git a/src/compiler/translator/ParseContext.h b/src/compiler/translator/ParseContext.h
index da7c420..97872de 100644
--- a/src/compiler/translator/ParseContext.h
+++ b/src/compiler/translator/ParseContext.h
@@ -102,23 +102,11 @@
mFragmentPrecisionHighOnESSL1 = fragmentPrecisionHigh;
}
- bool getFunctionReturnsValue() const { return mFunctionReturnsValue; }
- void setFunctionReturnsValue(bool functionReturnsValue)
- {
- mFunctionReturnsValue = functionReturnsValue;
- }
-
void setLoopNestingLevel(int loopNestintLevel)
{
mLoopNestingLevel = loopNestintLevel;
}
- const TType *getCurrentFunctionType() const { return mCurrentFunctionType; }
- void setCurrentFunctionType(const TType *currentFunctionType)
- {
- mCurrentFunctionType = currentFunctionType;
- }
-
void incrLoopNestingLevel() { ++mLoopNestingLevel; }
void decrLoopNestingLevel() { --mLoopNestingLevel; }
@@ -244,6 +232,12 @@
TIntermTyped *initializer);
void parseGlobalLayoutQualifier(const TPublicType &typeQualifier);
+ TIntermAggregate *addFunctionPrototypeDeclaration(const TFunction &function,
+ const TSourceLoc &location);
+ TIntermAggregate *addFunctionDefinition(const TFunction &function,
+ TIntermAggregate *functionPrototype,
+ TIntermAggregate *functionBody,
+ const TSourceLoc &location);
void parseFunctionPrototype(const TSourceLoc &location,
TFunction *function,
TIntermAggregate **aggregateOut);