MCPcopy Create free account
hub / github.com/beefytech/Beef / ReplaceNode

Method ReplaceNode

IDEHelper/Compiler/BfReducer.cpp:160–213  ·  view source on GitHub ↗

Replaces prevNode with new node and adds prevNode to newNode's children It can be considered that newNode encapsulated prevNode.

Source from the content-addressed store, hash-verified

158// Replaces prevNode with new node and adds prevNode to newNode's children
159// It can be considered that newNode encapsulated prevNode.
160void BfReducer::ReplaceNode(BfAstNode* prevNode, BfAstNode* newNode)
161{
162#ifdef BF_AST_HAS_PARENT_MEMBER
163 newNode->mParent = prevNode->mParent;
164#endif
165
166 if (!newNode->IsInitialized())
167 {
168#ifdef BF_AST_COMPACT
169 if (prevNode->mIsCompact)
170 {
171 newNode->mIsCompact = prevNode->mIsCompact;
172 newNode->mCompact_SrcStart = prevNode->mCompact_SrcStart;
173 newNode->mCompact_SrcLen = prevNode->mCompact_SrcLen;
174 newNode->mCompact_TriviaLen = prevNode->mCompact_TriviaLen;
175 }
176 else
177 {
178 int prevTriviaStart;
179 int prevSrcStart;
180 int prevSrcEnd;
181 prevNode->GetSrcPositions(prevTriviaStart, prevSrcStart, prevSrcEnd);
182 newNode->Init(prevTriviaStart, prevSrcStart, prevSrcEnd);
183 }
184#else
185 newNode->mTriviaStart = prevNode->mTriviaStart;
186 newNode->mSrcStart = prevNode->mSrcStart;
187 newNode->mSrcEnd = prevNode->mSrcEnd;
188#endif
189 }
190 else
191 {
192 int newTriviaStart;
193 int newSrcStart;
194 int newSrcEnd;
195 newNode->GetSrcPositions(newTriviaStart, newSrcStart, newSrcEnd);
196
197 int prevTriviaStart;
198 int prevSrcStart;
199 int prevSrcEnd;
200 prevNode->GetSrcPositions(prevTriviaStart, prevSrcStart, prevSrcEnd);
201
202 if (prevTriviaStart < newTriviaStart)
203 newNode->SetTriviaStart(prevTriviaStart);
204 if (prevSrcStart < newSrcStart)
205 newNode->SetSrcStart(prevSrcStart);
206 if (prevSrcEnd > newSrcEnd)
207 newNode->SetSrcEnd(prevSrcEnd);
208 }
209
210#ifdef BF_AST_HAS_PARENT_MEMBER
211 prevNode->mParent = newNode;
212#endif
213}
214
215BfAstNode* BfReducer::Fail(const StringImpl& errorMsg, BfAstNode* refNode)
216{

Callers 1

Calls 6

IsInitializedMethod · 0.80
GetSrcPositionsMethod · 0.80
SetTriviaStartMethod · 0.80
SetSrcStartMethod · 0.80
SetSrcEndMethod · 0.80
InitMethod · 0.45

Tested by

no test coverage detected