forked from qt-creator/qt-creator
		
	C++: do not strip trailing newlines in the preprocessor output.
Doing so resulted in an incorrect position for the EOF token when the preprocessed output would be parsed. That in turn leads to incorrect insertion positions for refactoring actions. This is especially true when a file contains only preprocessor directives: the EOF token would point to line 1 column 1, which is usually not the place where code should be inserted. Change-Id: I7d359aa7a6c04bc52c8b873fd49ad6afc3a77319 Reviewed-by: hjk <hjk121@nokiamail.com>
This commit is contained in:
		
				
					committed by
					
						 Erik Verbruggen
						Erik Verbruggen
					
				
			
			
				
	
			
			
			
						parent
						
							271a96b19a
						
					
				
				
					commit
					f2631ad031
				
			| @@ -1332,19 +1332,6 @@ void Preprocessor::synchronizeOutputLines(const PPToken &tk, bool forceLine) | ||||
|     adjustForCommentOrStringNewlines(&m_env->currentLine, tk); | ||||
| } | ||||
|  | ||||
| void Preprocessor::removeTrailingOutputLines() | ||||
| { | ||||
|     QByteArray &buffer = currentOutputBuffer(); | ||||
|     int i = buffer.size() - 1; | ||||
|     while (i >= 0 && buffer.at(i) == '\n') | ||||
|         --i; | ||||
|     const int mightChop = buffer.size() - i - 1; | ||||
|     if (mightChop > 1) { | ||||
|         // Keep one new line at end. | ||||
|         buffer.chop(mightChop - 1); | ||||
|     } | ||||
| } | ||||
|  | ||||
| std::size_t Preprocessor::computeDistance(const Preprocessor::PPToken &tk, bool forceTillLine) | ||||
| { | ||||
|     // Find previous non-space character or line begin. | ||||
| @@ -1450,8 +1437,6 @@ void Preprocessor::preprocess(const QString &fileName, const QByteArray &source, | ||||
|  | ||||
|     } while (tk.isNot(T_EOF_SYMBOL)); | ||||
|  | ||||
|     removeTrailingOutputLines(); | ||||
|  | ||||
|     if (includeGuardMacroName) { | ||||
|         if (m_state.m_includeGuardState == State::IncludeGuardState_AfterDefine | ||||
|                 || m_state.m_includeGuardState == State::IncludeGuardState_AfterEndif) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user