PageRenderTime 41ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/src/Boo.Lang.Compiler/TypeSystem/InternalField.cs

https://github.com/boo/boo-lang
C# | 104 lines | 66 code | 12 blank | 26 comment | 2 complexity | 499fcdaae247136ab1c4415064d4186d MD5 | raw file
Possible License(s): GPL-2.0
  1. #region license
  2. // Copyright (c) 2004, Rodrigo B. de Oliveira (rbo@acm.org)
  3. // All rights reserved.
  4. //
  5. // Redistribution and use in source and binary forms, with or without modification,
  6. // are permitted provided that the following conditions are met:
  7. //
  8. // * Redistributions of source code must retain the above copyright notice,
  9. // this list of conditions and the following disclaimer.
  10. // * Redistributions in binary form must reproduce the above copyright notice,
  11. // this list of conditions and the following disclaimer in the documentation
  12. // and/or other materials provided with the distribution.
  13. // * Neither the name of Rodrigo B. de Oliveira nor the names of its
  14. // contributors may be used to endorse or promote products derived from this
  15. // software without specific prior written permission.
  16. //
  17. // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  18. // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  19. // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  20. // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
  21. // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  22. // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  23. // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  24. // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  25. // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  26. // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  27. #endregion
  28. namespace Boo.Lang.Compiler.TypeSystem
  29. {
  30. using Boo.Lang.Compiler.Ast;
  31. public class InternalField : InternalEntity<Field>, IField
  32. {
  33. private object _staticValue;
  34. public InternalField(Field field) : base(field)
  35. {
  36. }
  37. override public EntityType EntityType
  38. {
  39. get { return EntityType.Field; }
  40. }
  41. public IType Type
  42. {
  43. get
  44. {
  45. return null != _node.Type
  46. ? TypeSystemServices.GetType(_node.Type)
  47. : Unknown.Default;
  48. }
  49. }
  50. public bool IsLiteral
  51. {
  52. get
  53. {
  54. //return IsStatic && IsInitOnly && TypeSystemServices.IsPrimitiveTypeOrString(Type);
  55. return null != _staticValue;
  56. }
  57. }
  58. public bool IsInitOnly
  59. {
  60. get
  61. {
  62. return _node.IsFinal;
  63. }
  64. }
  65. public object StaticValue
  66. {
  67. get
  68. {
  69. return _staticValue;
  70. }
  71. set
  72. {
  73. _staticValue = value;
  74. }
  75. }
  76. public Field Field
  77. {
  78. get
  79. {
  80. return _node;
  81. }
  82. }
  83. override public string ToString()
  84. {
  85. return FullName;
  86. }
  87. public bool IsDuckTyped
  88. {
  89. get { return false; }
  90. }
  91. }
  92. }