本文整理汇总了C++中TypeChecker::getObject方法的典型用法代码示例。如果您正苦于以下问题:C++ TypeChecker::getObject方法的具体用法?C++ TypeChecker::getObject怎么用?C++ TypeChecker::getObject使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TypeChecker
的用法示例。
在下文中一共展示了TypeChecker::getObject方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: typeCheck
void MemberAccessAST::typeCheck(TypeChecker& checker) {
mAccessExpression->typeCheck(checker);
if (auto varRef = std::dynamic_pointer_cast<VariableReferenceExpressionAST>(mAccessExpression)) {
auto varSymbol = std::dynamic_pointer_cast<VariableSymbol>(mSymbolTable->find(varRef->name()));
auto varRefType = checker.findType(varSymbol->variableType());
std::string memberName = getMemberName();
std::string objName = varRefType->name();
if (std::dynamic_pointer_cast<ArrayType>(varRefType)) {
objName = "Array";
}
if (!checker.objectExists(objName)) {
checker.typeError(varRefType->name() + " is not an object type.");
}
auto& object = checker.getObject(objName);
if (!object.fieldExists(memberName)) {
checker.typeError("There exists no field '" + memberName + "' in the type '" + varRefType->name() + "'.");
}
if (auto arrayMember = std::dynamic_pointer_cast<ArrayAccessAST>(mMemberExpression)) {
arrayMember->accessExpression()->typeCheck(checker);
}
}
}