示例#1
0
void wake::ast::Foreach::typeCheck() {
	auto_ptr<Type> list(iterable->typeCheck(false));

	if(list->type == TYPE_OPTIONAL) {
		errors->addError(new SemanticError(DIRECT_USE_OF_OPTIONAL_TYPE, "Iterating over optional type. You must first wrap object in an exists { } clause.", node));
		return;
	}

	// no sense checking the contents of the loop if we're missing a variable
	if(list->type == TYPE_MATCHALL) return;

	if(list->type != TYPE_LIST) {
		errors->addError(new SemanticError(TYPE_ERROR, "Calling foreach over something that is not a list", node));
	} else {
		Type lowered(*list->typedata.list.contained);

		if(lowered.alias != NULL) free(lowered.alias);
		Type actualLowered = getIterationType(&lowered);

		scopesymtable->pushScope();
		scopesymtable->add(&actualLowered);
		body->typeCheck();
		scopesymtable->popScope();

		AddSubNode(node, MakeNodeFromString(NT_COMPILER_HINT, strdup(scopesymtable->getNameForType(&actualLowered).c_str()), node->loc));
	}
}
nsIAtom*
nsLanguageAtomService::LookupLanguage(const nsACString &aLanguage,
                                      nsresult *aError)
{
  nsCAutoString lowered(aLanguage);
  ToLowerCase(lowered);

  nsCOMPtr<nsIAtom> lang = do_GetAtom(lowered);
  return GetLanguageGroup(lang, aError);
}
示例#3
0
void extended_lexical_cast( const std::string &val, bool &var )
{
    std::string lowered( boost::algorithm::to_lower_copy( val ) );

    if ( lowered == "true" || lowered == "1" )
    {
        var = true;
    }
    else if ( lowered == "false" || lowered == "0" )
    {
        var = false;
    }
    else
    {
        throw boost::bad_lexical_cast();
    }
}
示例#4
0
void EditFrame::onLower()
{
	emit lowered(this);
}