1 /*
2  * Copyright (C) 2020 The Android Open Source Project
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 package com.android.tools.metalava.model.text
17 
18 class ApiParseException : Exception {
19     private var file: String? = null
20     private var line = 0
21 
22     internal constructor(message: String) : super(message)
23     internal constructor(message: String, file: String, cause: Exception?) : super(message, cause) {
24         this.file = file
25     }
26     internal constructor(message: String, tokenizer: ApiFile.Tokenizer) : super(message) {
27         file = tokenizer.fileName
28         line = tokenizer.line
29     }
30 
31     override val message: String
32         get() {
33             val sb = StringBuilder()
34             if (file != null) {
35                 sb.append(file).append(':')
36             }
37             if (line > 0) {
38                 sb.append(line).append(':')
39             }
40             if (sb.isNotEmpty()) {
41                 sb.append(' ')
42             }
43             sb.append(super.message)
44             return sb.toString()
45         }
46 }