forked from jasder/antlr
Report errors in ANTLRFileStream.
Change the initializer to ANTLRFileStream so that it throws any errors that occur while reading the file. Previously, it was just dropping any errors on the floor (inside Utils.readFile). Remove Utils.readFile, it's not used anywhere else.
This commit is contained in:
parent
b4c34da1f0
commit
e77d690e36
|
@ -281,7 +281,7 @@ public class BaseSwiftTest implements RuntimeTestSupport {
|
|||
"\n" +
|
||||
"do {\n" +
|
||||
"let args = CommandLine.arguments\n" +
|
||||
"let input = ANTLRFileStream(args[1])\n" +
|
||||
"let input = try ANTLRFileStream(args[1])\n" +
|
||||
"let lex = <lexerName>(input)\n" +
|
||||
"let tokens = CommonTokenStream(lex)\n" +
|
||||
"<createParser>\n" +
|
||||
|
@ -327,7 +327,7 @@ public class BaseSwiftTest implements RuntimeTestSupport {
|
|||
|
||||
"setbuf(stdout, nil)\n" +
|
||||
"let args = CommandLine.arguments\n" +
|
||||
"let input = ANTLRFileStream(args[1])\n" +
|
||||
"let input = try ANTLRFileStream(args[1])\n" +
|
||||
"let lex = <lexerName>(input)\n" +
|
||||
"let tokens = CommonTokenStream(lex)\n" +
|
||||
|
||||
|
|
|
@ -9,30 +9,18 @@
|
|||
import Foundation
|
||||
|
||||
public class ANTLRFileStream: ANTLRInputStream {
|
||||
internal var fileName: String
|
||||
private let fileName: String
|
||||
|
||||
public convenience override init(_ fileName: String) {
|
||||
self.init(fileName, nil)
|
||||
}
|
||||
|
||||
public init(_ fileName: String, _ encoding: String.Encoding?) {
|
||||
public init(_ fileName: String, _ encoding: String.Encoding? = nil) throws {
|
||||
self.fileName = fileName
|
||||
super.init()
|
||||
load(fileName, encoding)
|
||||
}
|
||||
|
||||
public func load(_ fileName: String, _ encoding: String.Encoding?) {
|
||||
if encoding != nil {
|
||||
data = Utils.readFile(fileName, encoding!)
|
||||
} else {
|
||||
data = Utils.readFile(fileName)
|
||||
}
|
||||
self.n = data.count
|
||||
let fileContents = try String(contentsOfFile: fileName, encoding: encoding ?? .utf8)
|
||||
data = Array(fileContents)
|
||||
n = data.count
|
||||
}
|
||||
|
||||
override
|
||||
public func getSourceName() -> String {
|
||||
return fileName
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -34,19 +34,6 @@ public class Utils {
|
|||
}
|
||||
|
||||
|
||||
public static func readFile(_ path: String, _ encoding: String.Encoding = String.Encoding.utf8) -> [Character] {
|
||||
|
||||
var fileContents: String
|
||||
|
||||
do {
|
||||
fileContents = try String(contentsOfFile: path, encoding: encoding)
|
||||
} catch {
|
||||
return [Character]()
|
||||
}
|
||||
|
||||
return Array(fileContents.characters)
|
||||
}
|
||||
|
||||
public static func toMap(_ keys: [String]) -> Dictionary<String, Int> {
|
||||
var m = Dictionary<String, Int>()
|
||||
for (index,v) in keys.enumerated() {
|
||||
|
|
Loading…
Reference in New Issue