#![cfg(feature = "no_position")]
#![allow(unused_variables)]
#[cfg(feature = "no_std")]
use std::prelude::v1::*;
use std::{
fmt,
ops::{Add, AddAssign},
};
#[derive(Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy, Default)]
pub struct Position;
impl Position {
pub const NONE: Self = Self;
pub const START: Self = Self;
#[inline(always)]
#[must_use]
pub const fn new(line: u16, position: u16) -> Self {
Self
}
#[inline(always)]
#[must_use]
pub const fn line(self) -> Option<usize> {
None
}
#[inline(always)]
#[must_use]
pub const fn position(self) -> Option<usize> {
None
}
#[inline(always)]
pub(crate) fn advance(&mut self) {}
#[inline(always)]
pub(crate) fn rewind(&mut self) {}
#[inline(always)]
pub(crate) fn new_line(&mut self) {}
#[inline(always)]
#[must_use]
pub const fn is_beginning_of_line(self) -> bool {
false
}
#[inline(always)]
#[must_use]
pub const fn is_none(self) -> bool {
true
}
#[inline(always)]
#[must_use]
pub const fn or_else(self, pos: Self) -> Self {
pos
}
#[inline(always)]
pub(crate) fn debug_print(self, _f: &mut fmt::Formatter<'_>) -> fmt::Result {
Ok(())
}
}
impl fmt::Display for Position {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "none")
}
}
impl fmt::Debug for Position {
#[cold]
#[inline(always)]
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str("none")
}
}
impl Add for Position {
type Output = Self;
#[inline(always)]
fn add(self, rhs: Self) -> Self::Output {
Self
}
}
impl AddAssign for Position {
#[inline(always)]
fn add_assign(&mut self, rhs: Self) {}
}
#[derive(Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy, Default)]
pub struct Span;
impl Span {
pub const NONE: Self = Self;
#[inline(always)]
#[must_use]
pub const fn new(start: Position, end: Position) -> Self {
Self
}
#[inline(always)]
#[must_use]
pub const fn is_none(&self) -> bool {
true
}
#[inline(always)]
#[must_use]
pub const fn start(&self) -> Position {
Position::NONE
}
#[inline(always)]
#[must_use]
pub const fn end(&self) -> Position {
Position::NONE
}
}
impl fmt::Display for Span {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let f = f;
write!(f, "{:?}", Position)
}
}
impl fmt::Debug for Span {
#[cold]
#[inline(always)]
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
fmt::Display::fmt(self, f)
}
}