mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-12-01 01:36:09 +03:00
48 lines
1.4 KiB
C++
48 lines
1.4 KiB
C++
|
// Copyright 2016 The Chromium Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
#include "tools/gn/parse_node_value_adapter.h"
|
||
|
|
||
|
#include "tools/gn/parse_tree.h"
|
||
|
#include "tools/gn/scope.h"
|
||
|
|
||
|
ParseNodeValueAdapter::ParseNodeValueAdapter() : ref_(nullptr) {
|
||
|
}
|
||
|
|
||
|
ParseNodeValueAdapter::~ParseNodeValueAdapter() {
|
||
|
}
|
||
|
|
||
|
|
||
|
bool ParseNodeValueAdapter::Init(Scope* scope,
|
||
|
const ParseNode* node,
|
||
|
Err* err) {
|
||
|
const IdentifierNode* identifier = node->AsIdentifier();
|
||
|
if (identifier) {
|
||
|
ref_ = scope->GetValue(identifier->value().value(), true);
|
||
|
if (!ref_) {
|
||
|
identifier->MakeErrorDescribing("Undefined identifier");
|
||
|
return false;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
temporary_ = node->Execute(scope, err);
|
||
|
return !err->has_error();
|
||
|
}
|
||
|
|
||
|
bool ParseNodeValueAdapter::InitForType(Scope* scope,
|
||
|
const ParseNode* node,
|
||
|
Value::Type type,
|
||
|
Err* err) {
|
||
|
if (!Init(scope, node, err))
|
||
|
return false;
|
||
|
if (get().VerifyTypeIs(type, err))
|
||
|
return true;
|
||
|
|
||
|
// Fix up the error range (see class comment in the header file) to be the
|
||
|
// identifier node rather than the original value.
|
||
|
*err = Err(node, err->message(), err->help_text());
|
||
|
return false;
|
||
|
}
|