Files
swift-mirror/lib/Parse/PersistentParserState.cpp
Alex Hoppen fe2ae72ad2 [IDE] Rename CodeCompletion to IDEInspection in cases where the code path no longer exclusively applies to code completion
The code completio infrastructure is also being used for cursor info now, so it should no longer be called code completion.

rdar://103251187
2022-12-13 11:41:05 +01:00

51 lines
2.0 KiB
C++

//===--- PersistentParserState.cpp - Parser State Implementation ----------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
//
// This file implements parser state persistent across multiple parses.
//
//===----------------------------------------------------------------------===//
#include "swift/AST/ASTContext.h"
#include "swift/AST/Decl.h"
#include "swift/AST/Expr.h"
#include "swift/Basic/SourceManager.h"
#include "swift/Parse/PersistentParserState.h"
using namespace swift;
PersistentParserState::PersistentParserState() { }
PersistentParserState::~PersistentParserState() { }
void PersistentParserState::setIDEInspectionDelayedDeclState(
SourceManager &SM, unsigned BufferID, IDEInspectionDelayedDeclKind Kind,
unsigned Flags, DeclContext *ParentContext, SourceRange BodyRange,
SourceLoc PreviousLoc) {
assert(!IDEInspectionDelayedDeclStat.get() &&
"only one decl can be delayed for code completion");
unsigned startOffset = SM.getLocOffsetInBuffer(BodyRange.Start, BufferID);
unsigned endOffset = SM.getLocOffsetInBuffer(BodyRange.End, BufferID);
unsigned prevOffset = ~0U;
if (PreviousLoc.isValid())
prevOffset = SM.getLocOffsetInBuffer(PreviousLoc, BufferID);
IDEInspectionDelayedDeclStat.reset(new IDEInspectionDelayedDeclState(
Kind, Flags, ParentContext, startOffset, endOffset, prevOffset));
}
void PersistentParserState::restoreIDEInspectionDelayedDeclState(
const IDEInspectionDelayedDeclState &other) {
IDEInspectionDelayedDeclStat.reset(new IDEInspectionDelayedDeclState(
other.Kind, other.Flags, other.ParentContext,
other.StartOffset, other.EndOffset, other.PrevOffset));
}