1 /* 2 * Copyright (c) Meta Platforms, Inc. and affiliates. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.facebook.ktfmt.format 18 19 import org.jetbrains.kotlin.com.intellij.openapi.util.text.LineColumn 20 import org.jetbrains.kotlin.com.intellij.psi.PsiElement 21 22 class ParseError(val errorDescription: String, val lineColumn: LineColumn) : 23 IllegalArgumentException( 24 "${lineColumn.line + 1}:${lineColumn.column + 1}: error: $errorDescription") { 25 26 constructor( 27 errorDescription: String, 28 element: PsiElement, 29 ) : this(errorDescription, positionOf(element)) 30 31 companion object { positionOfnull32 private fun positionOf(element: PsiElement): LineColumn { 33 val doc = checkNotNull(element.containingFile.viewProvider.document) 34 val offset = element.textOffset 35 val lineZero = doc.getLineNumber(offset) 36 val colZero = offset - doc.getLineStartOffset(lineZero) 37 return LineColumn.of(lineZero, colZero) 38 } 39 } 40 } 41